Add Plan page with day planner
This commit is contained in:
@ -1,11 +0,0 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"time"
|
||||
// "github.com/moustachioed/dash/backend/database/models"
|
||||
)
|
||||
|
||||
type Database interface {
|
||||
WriteJournalEntry(interface{}) error
|
||||
GetJournalEntryForDate(time.Time) (interface{}, error)
|
||||
}
|
||||
25
backend/database/models/plan.go
Normal file
25
backend/database/models/plan.go
Normal file
@ -0,0 +1,25 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"gorm.io/datatypes"
|
||||
)
|
||||
|
||||
type PlanDay struct {
|
||||
Date datatypes.Date `gorm:"primaryKey"`
|
||||
Morning datatypes.JSON
|
||||
Midday datatypes.JSON
|
||||
Afternoon datatypes.JSON
|
||||
Evening datatypes.JSON
|
||||
Pleasant datatypes.JSON
|
||||
Reminders datatypes.JSON
|
||||
}
|
||||
|
||||
type PlanWeek struct {
|
||||
Date datatypes.Date `gorm:"primaryKey"`
|
||||
Items datatypes.JSON
|
||||
}
|
||||
|
||||
type PlanMonth struct {
|
||||
Date datatypes.Date `gorm:"primaryKey"`
|
||||
Items datatypes.JSON
|
||||
}
|
||||
@ -11,13 +11,14 @@ import (
|
||||
"gorm.io/gorm/clause"
|
||||
|
||||
"github.com/moustachioed/dash/backend/database/models"
|
||||
"github.com/moustachioed/dash/backend/service"
|
||||
)
|
||||
|
||||
type PgDatabase struct {
|
||||
Db *gorm.DB
|
||||
}
|
||||
|
||||
func NewPgDatabase(host string, user string, password string, database string, port uint16) (Database, error) {
|
||||
func NewPgDatabase(host string, user string, password string, database string, port uint16) (service.DataStore, error) {
|
||||
db := &PgDatabase{}
|
||||
|
||||
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable", host, user, password, database, port)
|
||||
@ -38,6 +39,9 @@ func NewPgDatabase(host string, user string, password string, database string, p
|
||||
|
||||
func (db *PgDatabase) migrate() {
|
||||
db.Db.AutoMigrate(&models.Journal{})
|
||||
db.Db.AutoMigrate(&models.PlanDay{})
|
||||
db.Db.AutoMigrate(&models.PlanWeek{})
|
||||
db.Db.AutoMigrate(&models.PlanMonth{})
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WriteJournalEntry(entry interface{}) error {
|
||||
@ -57,3 +61,57 @@ func (db *PgDatabase) GetJournalEntryForDate(date time.Time) (interface{}, error
|
||||
|
||||
return entry, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WritePlanDay(entry interface{}) error {
|
||||
planDay := entry.(models.PlanDay)
|
||||
err := db.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(&planDay).Error
|
||||
if err != nil {
|
||||
log.Print("Error writing plan day to database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetPlanDayForDate(date time.Time) (interface{}, error) {
|
||||
entry := models.PlanDay{Date: datatypes.Date(date)}
|
||||
db.Db.First(&entry)
|
||||
|
||||
return entry, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WritePlanWeek(entry interface{}) error {
|
||||
planWeek := entry.(models.PlanWeek)
|
||||
err := db.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(&planWeek).Error
|
||||
if err != nil {
|
||||
log.Print("Error writing plan week to database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetPlanWeekForDate(date time.Time) (interface{}, error) {
|
||||
entry := models.PlanWeek{Date: datatypes.Date(date)}
|
||||
db.Db.First(&entry)
|
||||
|
||||
return entry, nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) WritePlanMonth(entry interface{}) error {
|
||||
planMonth := entry.(models.PlanMonth)
|
||||
err := db.Db.Clauses(clause.OnConflict{UpdateAll: true}).Create(&planMonth).Error
|
||||
if err != nil {
|
||||
log.Print("Error writing plan month to database.")
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *PgDatabase) GetPlanMonthForDate(date time.Time) (interface{}, error) {
|
||||
entry := models.PlanMonth{Date: datatypes.Date(date)}
|
||||
db.Db.First(&entry)
|
||||
|
||||
return entry, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user