diff options
| author | AKP <tom@tdpain.net> | 2023-01-19 14:11:22 +0000 |
|---|---|---|
| committer | AKP <tom@tdpain.net> | 2023-01-19 15:00:34 +0000 |
| commit | b495673714eb3561add1516bc619045b6e1da15d (patch) | |
| tree | aa79c3a802450023d70515d1693970028cb6955e | |
| parent | a902dcd07c9ac75b22872e0d12e822d9a813044b (diff) | |
Update schema to store ETags and cached content
Signed-off-by: AKP <tom@tdpain.net>
| -rw-r--r-- | walrss/internal/db/20230119135807_etags.go | 50 | ||||
| -rw-r--r-- | walrss/internal/db/db.go | 3 |
2 files changed, 53 insertions, 0 deletions
diff --git a/walrss/internal/db/20230119135807_etags.go b/walrss/internal/db/20230119135807_etags.go new file mode 100644 index 0000000..dd34934 --- /dev/null +++ b/walrss/internal/db/20230119135807_etags.go @@ -0,0 +1,50 @@ +package db + +import ( + "context" + "github.com/uptrace/bun" + "strings" +) + +func init() { + migs.MustRegister( + func(ctx context.Context, db *bun.DB) error { + migLogger.Debug().Msg("2022-01-19@13:58:07 up") + + queries := []string{ + `ALTER TABLE feeds ADD COLUMN last_etag VARCHAR;`, + `ALTER TABLE feeds ADD COLUMN cached_content VARCHAR;`, + + } + + for _, query := range queries { + if _, err := db.ExecContext(ctx, query); err != nil { + if !strings.Contains(err.Error(), "duplicate column name") { + return err + } + } + } + + return nil + }, + func(ctx context.Context, db *bun.DB) error { + migLogger.Debug().Msg("2022-01-19@13:58:07 down") + + queries := []string{ + `ALTER TABLE feeds DROP COLUMN last_etag;`, + `ALTER TABLE feeds DROP COLUMN cached_content;`, + + } + + for _, query := range queries { + if _, err := db.ExecContext(ctx, query); err != nil { + if !strings.Contains(err.Error(), "no such column2") { + return err + } + } + } + + return nil + }, + ) +} diff --git a/walrss/internal/db/db.go b/walrss/internal/db/db.go index 4da74e0..f94aa4f 100644 --- a/walrss/internal/db/db.go +++ b/walrss/internal/db/db.go @@ -43,6 +43,9 @@ type Feed struct { Name string `bun:"name,notnull"` UserID string `bun:"user_id,notnull"` + LastEtag string `bun:"last_etag,nullzero"` + CachedContent string `bun:"cached_content,nullzero"` + User *User `bun:",rel:belongs-to,join:user_id=id"` } |
