diff options
| author | Bobby <[email protected]> | 2025-12-19 13:07:23 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-19 13:07:23 +0530 |
| commit | 767297e28d47ee9cf3722054e41caa837f0e68d2 (patch) | |
| tree | 24a93038b7f8d0a0106cdf918477ae1c326c54bb /models | |
| parent | 2584f8d7a0eb3bc55716f78a8bba45d524252b69 (diff) | |
| download | lain-767297e28d47ee9cf3722054e41caa837f0e68d2.tar.xz lain-767297e28d47ee9cf3722054e41caa837f0e68d2.zip | |
preferences model; db setup; types
Diffstat (limited to 'models')
| -rw-r--r-- | models/preferences.go | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/models/preferences.go b/models/preferences.go new file mode 100644 index 0000000..0d1624f --- /dev/null +++ b/models/preferences.go @@ -0,0 +1,96 @@ +package models + +import ( + "lain/types" + "time" + + "gorm.io/datatypes" + "gorm.io/gorm" +) + +type Preferences struct { + // Credentials + Email string `gorm:"primaryKey;uniqueIndex"` + Authorization string `gorm:"not null"` + + // Calendar + CalendarName string + CalendarURL string + CalendarUsername string + CalendarAuthorization string + CalendarColor string + CalendarDescription string + CalendarSyncIntervalMinutes int `gorm:"default:30"` + + // Address Book + AddressBookName string + AddressBookURL string + AddressBookUsername string + AddressBookAuthorization string + AddressBookColor string + AddressBookDescription string + AddressBookSyncIntervalMinutes int `gorm:"default:30"` + + // Mailbox View + Language string `gorm:"default:'en'"` + TimeZone string `gorm:"default:'(GMT +00:00) UTC'"` + TimeFormat types.TimeFormat `gorm:"type:varchar(20);default:'07:30'"` + DateFormat types.DateFormat `gorm:"type:varchar(20);default:'12/20/2025'"` + PrettyDates bool `gorm:"default:true"` + MarkMessagesAsRead types.EmailReadingOption `gorm:"type:varchar(20);default:'Immediately'"` + EmailsPerPage int `gorm:"default:50"` + EnableSounds bool `gorm:"default:false"` + + // Displaying Emails + OpenMessagesInNewWindow bool `gorm:"default:false"` + ShowEmailAddressWithDisplayName bool `gorm:"default:false"` + DisplayHTML bool `gorm:"default:true"` + LoadRemoteContent types.RemoteResourceDownloadOption `gorm:"type:varchar(30);default:'From my contacts'"` + ReturnReceipts types.ReturnReceiptOption `gorm:"type:varchar(50);default:'Ask me each time'"` + DisplayAttachedImagesBelowMessage bool `gorm:"default:true"` + DisplayEmoticonsInPlainTextMessages bool `gorm:"default:false"` + + // Composing Emails + ComposeMessagesInNewWindow bool `gorm:"default:false"` + DefaultComposeFormat types.EmailComposingOption `gorm:"type:varchar(100);default:'Always, except when replying to plain text messages'"` + AutoSaveDraftIntervalSeconds types.AutoSaveDraftIntervalOption `gorm:"default:300"` + AlwaysRequestReturnReceipt bool `gorm:"default:false"` + AlwaysRequestDeliveryStatus bool `gorm:"default:false"` + QuoteOriginalMessage types.EmailReplyOption `gorm:"type:varchar(50);default:'Place my reply below the original message'"` + MessageForwarding types.MessageForwardingOption `gorm:"type:varchar(50);default:'Inline'"` + HTMLFontFamily types.EmailHTMLFontFamilyOption `gorm:"type:varchar(50);default:'Verdana'"` + HTMLFontSize types.EmailHTMLFontSizeOption `gorm:"default:'10'"` + EnableEmoticons bool `gorm:"default:true"` + AttachmentNames types.EmailAttachementNameStyleOption `gorm:"type:varchar(30);default:'RFC 2047/2231 (Outlook)'"` + + // Signature Options + IncludeSignature types.EmailSignatureOption `gorm:"type:varchar(20);default:'Always'"` + PlaceSignatureBelowQuotedText bool `gorm:"default:false"` + RemoveOriginalSignatureWhenReplying bool `gorm:"default:true"` + + // Contact Options + ShowContactPhotos bool `gorm:"default:true"` + ListContactsAs types.ContactDisplayOption `gorm:"type:varchar(20);default:'Display Name'"` + SortContactsBy types.ContactSortingOption `gorm:"type:varchar(20);default:'Last Name'"` + ContactsPerPage int `gorm:"default:50"` + + // Server Settings + MarkMessagesAsReadOnDelete bool `gorm:"default:true"` + FlagMessagesForDeletionInsteadOfDelete bool `gorm:"default:false"` + DoNotShowDeletedMessages bool `gorm:"default:false"` + DirectlyDeleteMessagesInJunkFolder bool `gorm:"default:false"` + MarkMessagesAsReadOnArchive bool `gorm:"default:true"` + ClearTrashOnLogout types.ClearTrashOnLogoutOption `gorm:"type:varchar(30);default:'Never'"` + + UseEmailEncryption bool `gorm:"default:false"` + PGPPrivateKey datatypes.JSON `gorm:"type:jsonb"` + PGPPublicKey datatypes.JSON `gorm:"type:jsonb"` + + // Sync + EmailSyncIntervalMinutes int `gorm:"default:5"` + LastSyncedAt time.Time + + CreatedAt time.Time + UpdatedAt time.Time + DeletedAt gorm.DeletedAt `gorm:"index"` +} |
