From a3fa964c585f62ccf4c4113da1dc324839122c88 Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Sun, 7 Jul 2024 03:02:21 -0400 Subject: Fix Adaptive Scheduler, Update email handlers, telegram notifications --- internal/chore/model/model.go | 53 +++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 20 deletions(-) (limited to 'internal/chore/model/model.go') diff --git a/internal/chore/model/model.go b/internal/chore/model/model.go index 4de7808..90f6c29 100644 --- a/internal/chore/model/model.go +++ b/internal/chore/model/model.go @@ -7,26 +7,26 @@ import ( ) type Chore struct { - ID int `json:"id" gorm:"primary_key"` - Name string `json:"name" gorm:"column:name"` // Chore description - FrequencyType string `json:"frequencyType" gorm:"column:frequency_type"` // "daily", "weekly", "monthly", "yearly", "adaptive",or "custom" - Frequency int `json:"frequency" gorm:"column:frequency"` // Number of days, weeks, months, or years between chores - FrequencyMetadata *string `json:"frequencyMetadata" gorm:"column:frequency_meta"` // Additional frequency information - NextDueDate *time.Time `json:"nextDueDate" gorm:"column:next_due_date;index"` // When the chore is due - IsRolling bool `json:"isRolling" gorm:"column:is_rolling"` // Whether the chore is rolling - AssignedTo int `json:"assignedTo" gorm:"column:assigned_to"` // Who the chore is assigned to - Assignees []ChoreAssignees `json:"assignees" gorm:"foreignkey:ChoreID;references:ID"` // Assignees of the chore - AssignStrategy string `json:"assignStrategy" gorm:"column:assign_strategy"` // How the chore is assigned - IsActive bool `json:"isActive" gorm:"column:is_active"` // Whether the chore is active - Notification bool `json:"notification" gorm:"column:notification"` // Whether the chore has notification - NotificationMetadata *string `json:"notificationMetadata" gorm:"column:notification_meta"` // Additional notification information - Labels *string `json:"labels" gorm:"column:labels"` // Labels for the chore - CircleID int `json:"circleId" gorm:"column:circle_id;index"` // The circle this chore is in - CreatedAt time.Time `json:"createdAt" gorm:"column:created_at"` // When the chore was created - UpdatedAt time.Time `json:"updatedAt" gorm:"column:updated_at"` // When the chore was last updated - CreatedBy int `json:"createdBy" gorm:"column:created_by"` // Who created the chore - UpdatedBy int `json:"updatedBy" gorm:"column:updated_by"` // Who last updated the chore - ThingChore tModel.ThingChore `json:"thingChore" gorm:"foreignkey:chore_id;references:id;<-:false"` // ThingChore relationship + ID int `json:"id" gorm:"primary_key"` + Name string `json:"name" gorm:"column:name"` // Chore description + FrequencyType string `json:"frequencyType" gorm:"column:frequency_type"` // "daily", "weekly", "monthly", "yearly", "adaptive",or "custom" + Frequency int `json:"frequency" gorm:"column:frequency"` // Number of days, weeks, months, or years between chores + FrequencyMetadata *string `json:"frequencyMetadata" gorm:"column:frequency_meta"` // Additional frequency information + NextDueDate *time.Time `json:"nextDueDate" gorm:"column:next_due_date;index"` // When the chore is due + IsRolling bool `json:"isRolling" gorm:"column:is_rolling"` // Whether the chore is rolling + AssignedTo int `json:"assignedTo" gorm:"column:assigned_to"` // Who the chore is assigned to + Assignees []ChoreAssignees `json:"assignees" gorm:"foreignkey:ChoreID;references:ID"` // Assignees of the chore + AssignStrategy string `json:"assignStrategy" gorm:"column:assign_strategy"` // How the chore is assigned + IsActive bool `json:"isActive" gorm:"column:is_active"` // Whether the chore is active + Notification bool `json:"notification" gorm:"column:notification"` // Whether the chore has notification + NotificationMetadata *string `json:"notificationMetadata" gorm:"column:notification_meta"` // Additional notification information + Labels *string `json:"labels" gorm:"column:labels"` // Labels for the chore + CircleID int `json:"circleId" gorm:"column:circle_id;index"` // The circle this chore is in + CreatedAt time.Time `json:"createdAt" gorm:"column:created_at"` // When the chore was created + UpdatedAt time.Time `json:"updatedAt" gorm:"column:updated_at"` // When the chore was last updated + CreatedBy int `json:"createdBy" gorm:"column:created_by"` // Who created the chore + UpdatedBy int `json:"updatedBy" gorm:"column:updated_by"` // Who last updated the chore + ThingChore *tModel.ThingChore `json:"thingChore" gorm:"foreignkey:chore_id;references:id;<-:false"` // ThingChore relationship } type ChoreAssignees struct { ID int `json:"-" gorm:"primary_key"` @@ -70,3 +70,16 @@ type Tag struct { // CircleID int `json:"circleId" gorm:"primaryKey;autoIncrement:false"` // TagID int `json:"tagId" gorm:"primaryKey;autoIncrement:false"` // } + +type ChoreDetail struct { + ID int `json:"id" gorm:"column:id"` + Name string `json:"name" gorm:"column:name"` + FrequencyType string `json:"frequencyType" gorm:"column:frequency_type"` + NextDueDate *time.Time `json:"nextDueDate" gorm:"column:next_due_date"` + AssignedTo int `json:"assignedTo" gorm:"column:assigned_to"` + LastCompletedDate *time.Time `json:"lastCompletedDate" gorm:"column:last_completed_date"` + LastCompletedBy *int `json:"lastCompletedBy" gorm:"column:last_completed_by"` + TotalCompletedCount int `json:"totalCompletedCount" gorm:"column:total_completed"` + Notes *string `json:"notes" gorm:"column:notes"` + CreatedBy int `json:"createdBy" gorm:"column:created_by"` +} -- cgit