package it.integry.integrywmsnative.core.data_store.db.dao;

import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;

@Dao
public interface GrigliaDao {
    @Query("SELECT * from griglie")
    List<Griglia> getAll();

    @Query("SELECT griglie.*, COUNT(articoli_griglia.articolo_griglia_id) as countArticoli from griglie LEFT JOIN articoli_griglia ON (griglie.griglia_id = articoli_griglia.id_griglia) where cod_alis = :codAlis GROUP BY griglie.griglia_id")
    GrigliaWrapper findByCodAlis(String codAlis);

    @Insert
    long insert(Griglia griglia);

    @Update
    void update(Griglia griglia);

    @Insert
    void insertAll(Griglia... griglie);

    @Update
    void updateAll(Griglia... griglie);

    @Delete
    void delete(Griglia griglia);

    @Query("SELECT * from griglie where griglia_id = :idGriglia")
    Griglia findGrigliaById(int idGriglia);
}
