V2
This commit is contained in:
6
backend/database/models/inbox.go
Normal file
6
backend/database/models/inbox.go
Normal file
@ -0,0 +1,6 @@
|
||||
package models
|
||||
|
||||
type Inbox struct {
|
||||
Id int32 `gorm:"primaryKey"`
|
||||
Item string
|
||||
}
|
||||
@ -17,8 +17,15 @@ type PlanDay struct {
|
||||
type PlanWeek struct {
|
||||
Date datatypes.Date `gorm:"primaryKey"`
|
||||
Items datatypes.JSON
|
||||
// Items []PlanWeekItem
|
||||
}
|
||||
|
||||
// type PlanWeekItem struct {
|
||||
// Item string
|
||||
// NumTodo int32
|
||||
// NumDone int32
|
||||
// }
|
||||
|
||||
type PlanMonth struct {
|
||||
Date datatypes.Date `gorm:"primaryKey"`
|
||||
Items datatypes.JSON
|
||||
|
||||
19
backend/database/models/tracking.go
Normal file
19
backend/database/models/tracking.go
Normal file
@ -0,0 +1,19 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
)
|
||||
|
||||
type TrackingCategory struct {
|
||||
Name string `gorm:"primaryKey"`
|
||||
Type string
|
||||
Items datatypes.JSON
|
||||
}
|
||||
|
||||
type TrackingItem struct {
|
||||
Date time.Time `gorm:"primaryKey"`
|
||||
Type string `gorm:"primaryKey"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
@ -42,6 +42,9 @@ func (db *PgDatabase) migrate() {
|
||||
db.Db.AutoMigrate(&models.PlanDay{})
|
||||
db.Db.AutoMigrate(&models.PlanWeek{})
|
||||
db.Db.AutoMigrate(&models.PlanMonth{})
|
||||
db.Db.AutoMigrate(&models.TrackingCategory{})
|
||||
db.Db.AutoMigrate(&models.TrackingItem{})
|
||||
db.Db.AutoMigrate(&models.Inbox{})
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WriteJournalEntry(entry interface{}) error {
|
||||
@ -111,7 +114,80 @@ func (db *PgDatabase) WritePlanMonth(entry interface{}) error {
|
||||
|
||||
func (db *PgDatabase) GetPlanMonthForDate(date time.Time) (interface{}, error) {
|
||||
entry := models.PlanMonth{Date: datatypes.Date(date)}
|
||||
db.Db.First(&entry)
|
||||
err := db.Db.First(&entry).Error
|
||||
if err != nil {
|
||||
log.Print("Error getting plan month from database.")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entry, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetTrackingItemsForDate(date time.Time) (interface{}, error) {
|
||||
entries := []models.TrackingItem{}
|
||||
err := db.Db.Where("date = ?", datatypes.Date(date)).Find(&entries).Error
|
||||
if err != nil {
|
||||
log.Print("Error getting tracking items from database.")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return entries, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WriteTrackingItems(entries interface{}) error {
|
||||
trackingItems := entries.([]models.TrackingItem)
|
||||
if len(trackingItems) == 0 {
|
||||
return nil
|
||||
}
|
||||
err := db.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(&trackingItems).Error
|
||||
if err != nil {
|
||||
log.Print("Error writing tracking items to database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetTrackingCategories() (interface{}, error) {
|
||||
categories := []models.TrackingCategory{}
|
||||
err := db.Db.Find(&categories).Error
|
||||
if err != nil {
|
||||
log.Print("Error getting tracking categories from database.")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return categories, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WriteInboxItem(entry interface{}) error {
|
||||
inboxItem := entry.(models.Inbox)
|
||||
err := db.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(&inboxItem).Error
|
||||
if err != nil {
|
||||
log.Print("Error writing inbox item to database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) DeleteInboxItem(id int32) error {
|
||||
err := db.Db.Delete(&models.Inbox{}, id).Error
|
||||
if err != nil {
|
||||
log.Print("Error deleting inbox item from database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetInboxItems() ([]interface{}, error) {
|
||||
var inboxItems []models.Inbox
|
||||
db.Db.Find(&inboxItems)
|
||||
|
||||
var interfaceSlice []interface{} = make([]interface{}, len(inboxItems))
|
||||
for i, d := range inboxItems {
|
||||
interfaceSlice[i] = d
|
||||
}
|
||||
|
||||
return interfaceSlice, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user