From cb07f8990dcf41fe101e229daf9b0676f176abd9 Mon Sep 17 00:00:00 2001 From: Brooke Kuhlmann Date: Tue, 9 Sep 2025 16:54:46 -0600 Subject: [PATCH] Added membership table migration Necessary to associate accounts with users. Milestone: minor --- .../20250916112116_create_membership.rb | 26 +++++++ config/db/structure.sql | 72 ++++++++++++++++++- 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 config/db/migrate/20250916112116_create_membership.rb diff --git a/config/db/migrate/20250916112116_create_membership.rb b/config/db/migrate/20250916112116_create_membership.rb new file mode 100644 index 00000000..d7b03993 --- /dev/null +++ b/config/db/migrate/20250916112116_create_membership.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +ROM::SQL.migration do + change do + create_table :membership do + primary_key :id + + foreign_key :account_id, + :account, + index: true, + null: false, + on_delete: :cascade, + on_update: :cascade + + foreign_key :user_id, + :user, + index: true, + null: false, + on_delete: :cascade, + on_update: :cascade + + column :created_at, :timestamp, null: false, default: Sequel::CURRENT_TIMESTAMP + column :updated_at, :timestamp, null: false, default: Sequel::CURRENT_TIMESTAMP + end + end +end diff --git a/config/db/structure.sql b/config/db/structure.sql index 6dc7da28..faf7d8a3 100644 --- a/config/db/structure.sql +++ b/config/db/structure.sql @@ -2,7 +2,7 @@ -- PostgreSQL database dump -- -\restrict aXuLSArImOqffdidwihp5xHlzc8Q3ailMXtQZfVyAysvnpVWDPAQsLm75Ltvod4 +\restrict YMOuZzdXNX9KmsJiPy018G8JeZqM9woMUF8S7bMNuf66j7qCdhQum6EVxFlMutt -- Dumped from database version 18.0 -- Dumped by pg_dump version 18.0 @@ -304,6 +304,33 @@ ALTER TABLE public.firmware ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ); +-- +-- Name: membership; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.membership ( + id integer NOT NULL, + account_id integer NOT NULL, + user_id integer NOT NULL, + created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + updated_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL +); + + +-- +-- Name: membership_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +ALTER TABLE public.membership ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY ( + SEQUENCE NAME public.membership_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1 +); + + -- -- Name: model; Type: TABLE; Schema: public; Owner: - -- @@ -641,6 +668,14 @@ ALTER TABLE ONLY public.firmware ADD CONSTRAINT firmwares_version_key UNIQUE (version); +-- +-- Name: membership membership_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.membership + ADD CONSTRAINT membership_pkey PRIMARY KEY (id); + + -- -- Name: model model_label_key; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -857,6 +892,20 @@ CREATE INDEX device_logs_wifi_status_index ON public.device_log USING btree (wif CREATE INDEX firmwares_attachment_data_index ON public.firmware USING gin (attachment_data); +-- +-- Name: membership_account_id_index; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX membership_account_id_index ON public.membership USING btree (account_id); + + +-- +-- Name: membership_user_id_index; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX membership_user_id_index ON public.membership USING btree (user_id); + + -- -- Name: model_kind_index; Type: INDEX; Schema: public; Owner: - -- @@ -965,6 +1014,22 @@ ALTER TABLE ONLY public.device ADD CONSTRAINT devices_playlist_id_fkey FOREIGN KEY (playlist_id) REFERENCES public.playlist(id) ON UPDATE CASCADE ON DELETE SET NULL; +-- +-- Name: membership membership_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.membership + ADD CONSTRAINT membership_account_id_fkey FOREIGN KEY (account_id) REFERENCES public.account(id) ON UPDATE CASCADE ON DELETE CASCADE; + + +-- +-- Name: membership membership_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.membership + ADD CONSTRAINT membership_user_id_fkey FOREIGN KEY (user_id) REFERENCES public."user"(id) ON UPDATE CASCADE ON DELETE CASCADE; + + -- -- Name: playlist playlist_current_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -1057,7 +1122,7 @@ ALTER TABLE ONLY public."user" -- PostgreSQL database dump complete -- -\unrestrict aXuLSArImOqffdidwihp5xHlzc8Q3ailMXtQZfVyAysvnpVWDPAQsLm75Ltvod4 +\unrestrict YMOuZzdXNX9KmsJiPy018G8JeZqM9woMUF8S7bMNuf66j7qCdhQum6EVxFlMutt SET search_path TO "$user", public; @@ -1091,4 +1156,5 @@ INSERT INTO schema_migrations (filename) VALUES ('20250916111723_add_citext_extension.rb'), ('20250916111947_create_account.rb'), ('20250916112018_create_rodauth_user.rb'), -('20250916112035_create_rodauth_user_password_hash.rb'); +('20250916112035_create_rodauth_user_password_hash.rb'), +('20250916112116_create_membership.rb');