diff --git a/Makefile b/Makefile index 242c9d8..c3ff567 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ run-web: generate-web generate-go: migrate rm -rf go/gen/* ogen -target go/gen/reddit -package reddit -clean schemas/openapi/reddit.yaml + jet -source=sqlite -dsn="./go/data.db" -path="./go/gen/jet" (cd ./schemas/proto && buf generate --template buf.gen.go.yaml .) (cd go/gen && bobgen-sqlite --config ../bobgen.yaml) (cd go && goverter gen -g 'output:file ../gen/converter/converter.go' -g 'output:package github.com/tigorlazuardi/bluemage/go/gen/converter' ./converts) diff --git a/flake.nix b/flake.nix index 13d5339..08ded18 100644 --- a/flake.nix +++ b/flake.nix @@ -63,6 +63,7 @@ air gopls ogen + go-jet ]; }; }; diff --git a/go.mod b/go.mod index 38b2ed0..7cb4bc4 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/fatih/color v1.17.0 github.com/go-faster/errors v0.7.1 github.com/go-faster/jx v1.1.0 + github.com/go-jet/jet/v2 v2.11.1 github.com/jaswdr/faker/v2 v2.3.0 github.com/joho/godotenv v1.5.1 github.com/knadh/koanf/parsers/json v0.1.0 @@ -51,6 +52,7 @@ require ( github.com/aarondl/json v0.0.0-20221020222930-8b0db17ef1bf // indirect github.com/antlr4-go/antlr/v4 v4.13.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect @@ -65,11 +67,13 @@ require ( github.com/knadh/koanf/maps v0.1.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 // indirect github.com/samber/lo v1.38.1 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/stephenafamo/scan v0.4.2 // indirect github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stretchr/testify v1.9.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index d0e33d3..1b42994 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ github.com/go-faster/jx v1.1.0 h1:ZsW3wD+snOdmTDy9eIVgQdjUpXRRV4rqW8NS3t+20bg= github.com/go-faster/jx v1.1.0/go.mod h1:vKDNikrKoyUmpzaJ0OkIkRQClNHFX/nF3dnTJZb3skg= github.com/go-faster/yaml v0.4.6 h1:lOK/EhI04gCpPgPhgt0bChS6bvw7G3WwI8xxVe0sw9I= github.com/go-faster/yaml v0.4.6/go.mod h1:390dRIvV4zbnO7qC9FGo6YYutc+wyyUSHBgbXL52eXk= +github.com/go-jet/jet/v2 v2.11.1 h1:SEbh2lRUIiQweJpV0boWsQ4bV13x9p4h+RfajnL6vgM= +github.com/go-jet/jet/v2 v2.11.1/go.mod h1:+DTofDkGp1c0vpooXWEZyNhyi0k0mL7N2W9tdP4YqfA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -147,8 +149,9 @@ github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AV github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= diff --git a/schemas/migrations/20240812150506_create_device_subscriptions_table.sql b/schemas/migrations/20240812150506_create_device_subscriptions_table.sql new file mode 100644 index 0000000..c2fad1f --- /dev/null +++ b/schemas/migrations/20240812150506_create_device_subscriptions_table.sql @@ -0,0 +1,35 @@ +-- +goose Up +-- +goose StatementBegin +CREATE TABLE device_subscriptions( + id INTEGER PRIMARY KEY, + device VARCHAR(250) NOT NULL COLLATE NOCASE, + subreddit VARCHAR(255) NOT NULL COLLATE NOCASE, + created_at BIGINT NOT NULL DEFAULT (strftime('%s', 'now')), + CONSTRAINT fk_device_subscriptions_device_slug + FOREIGN KEY (device) + REFERENCES devices(slug) + ON DELETE CASCADE, + CONSTRAINT fk_device_subscriptions_subreddit_name + FOREIGN KEY (subreddit) + REFERENCES subreddits(name) + ON DELETE CASCADE +); + +CREATE UNIQUE INDEX + idx_unique_device_subscriptions_per_device ON + device_subscriptions(device, subreddit); + +CREATE INDEX + idx_device_subscriptions_subreddit ON + device_subscriptions(subreddit); + +CREATE INDEX + idx_device_subscriptions_device ON + device_subscriptions(device); + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DROP TABLE device_subscriptions; +-- +goose StatementEnd