aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--walrss/internal/db/20230119135807_etags.go50
-rw-r--r--walrss/internal/db/db.go3
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"`
}