// Path: app/src/main/java/com/vsahin/moneycim/Model/Dao/SpendingDao.java
// @Dao
// public interface SpendingDao {
// 
//     @Query("SELECT * FROM SPENDING INNER JOIN SPENDING_GROUP ON SPENDING.GROUP_ID = SPENDING_GROUP.GROUP_ID ORDER BY SPENDING.DATE DESC")
//     LiveData<List<Spending>> getSpendingsWithGroups();
// 
//     @Insert(onConflict = OnConflictStrategy.REPLACE)
//     void addSpending(RawSpending s);
// 
//     @Query("SELECT SUM(QUANTITY) FROM SPENDING")
//     LiveData<Double> getTotalSpendingQuantity();
// 
//     @Query("DELETE FROM SPENDING WHERE ID = :id")
//     void deleteSpending(int id);
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Dao/SpendingGroupDao.java
// @Dao
// public interface SpendingGroupDao {
// 
//     @Query("SELECT * FROM SPENDING_GROUP")
//     LiveData<List<SpendingGroup>> getAllSpendingGroups();
// 
//     @Insert
//     void addSpendingGroup(SpendingGroup spendingGroup);
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/RawSpending.java
// @Entity(tableName = "spending")
// public class RawSpending implements Serializable {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "id")
//     public int id;
// 
//     @ForeignKey(entity = SpendingGroup.class, parentColumns = "group-id", childColumns = "group-id")
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @TypeConverters(Converters.class)
//     @ColumnInfo(name = "date")
//     private Date date;
// 
//     @ColumnInfo(name = "quantity")
//     private Double quantity;
// 
//     @ColumnInfo(name = "description")
//     private String description;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Double getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(Double quantity) {
//         this.quantity = quantity;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/SpendingGroup.java
// @Entity(tableName = "spending_group")
// public class SpendingGroup {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @ColumnInfo(name = "group_name")
//     private String groupName;
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public String getGroupName() {
//         return groupName;
//     }
// 
//     public void setGroupName(String groupName) {
//         this.groupName = groupName;
//     }
// }


import androidx.room.Database;
import androidx.room.RoomDatabase;
import androidx.room.TypeConverters;
import com.vsahin.moneycim.Model.Dao.SpendingDao;
import com.vsahin.moneycim.Model.Dao.SpendingGroupDao;
import com.vsahin.moneycim.Model.Entity.RawSpending;
import com.vsahin.moneycim.Model.Entity.SpendingGroup;

package com.vsahin.moneycim.Model.Database;



/**
 * Created by Volkan Şahin on 17.08.2017.
 */

@Database(version = 1, entities = {RawSpending.class, SpendingGroup.class})
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase{


// Path: app/src/main/java/com/vsahin/moneycim/Model/Dao/SpendingDao.java
// @Dao
// public interface SpendingDao {
// 
//     @Query("SELECT * FROM SPENDING INNER JOIN SPENDING_GROUP ON SPENDING.GROUP_ID = SPENDING_GROUP.GROUP_ID ORDER BY SPENDING.DATE DESC")
//     LiveData<List<Spending>> getSpendingsWithGroups();
// 
//     @Insert(onConflict = OnConflictStrategy.REPLACE)
//     void addSpending(RawSpending s);
// 
//     @Query("SELECT SUM(QUANTITY) FROM SPENDING")
//     LiveData<Double> getTotalSpendingQuantity();
// 
//     @Query("DELETE FROM SPENDING WHERE ID = :id")
//     void deleteSpending(int id);
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Dao/SpendingGroupDao.java
// @Dao
// public interface SpendingGroupDao {
// 
//     @Query("SELECT * FROM SPENDING_GROUP")
//     LiveData<List<SpendingGroup>> getAllSpendingGroups();
// 
//     @Insert
//     void addSpendingGroup(SpendingGroup spendingGroup);
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/RawSpending.java
// @Entity(tableName = "spending")
// public class RawSpending implements Serializable {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "id")
//     public int id;
// 
//     @ForeignKey(entity = SpendingGroup.class, parentColumns = "group-id", childColumns = "group-id")
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @TypeConverters(Converters.class)
//     @ColumnInfo(name = "date")
//     private Date date;
// 
//     @ColumnInfo(name = "quantity")
//     private Double quantity;
// 
//     @ColumnInfo(name = "description")
//     private String description;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Double getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(Double quantity) {
//         this.quantity = quantity;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/SpendingGroup.java
// @Entity(tableName = "spending_group")
// public class SpendingGroup {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @ColumnInfo(name = "group_name")
//     private String groupName;
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public String getGroupName() {
//         return groupName;
//     }
// 
//     public void setGroupName(String groupName) {
//         this.groupName = groupName;
//     }
// }


// Path: app/src/main/java/com/vsahin/moneycim/Model/Database/AppDatabase.java
import androidx.room.Database;
import androidx.room.RoomDatabase;
import androidx.room.TypeConverters;
import com.vsahin.moneycim.Model.Dao.SpendingDao;
import com.vsahin.moneycim.Model.Dao.SpendingGroupDao;
import com.vsahin.moneycim.Model.Entity.RawSpending;
import com.vsahin.moneycim.Model.Entity.SpendingGroup;

package com.vsahin.moneycim.Model.Database;



/**
 * Created by Volkan Şahin on 17.08.2017.
 */

@Database(version = 1, entities = {RawSpending.class, SpendingGroup.class})
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase{


    public abstract SpendingDao spendingDao();
