diff --git a/db/migrations/20250729075246_uniform_ids.sql b/db/migrations/20250729075246_uniform_ids.sql new file mode 100644 index 0000000..d1a230e --- /dev/null +++ b/db/migrations/20250729075246_uniform_ids.sql @@ -0,0 +1,9 @@ +-- migrate:up +ALTER TABLE yore.day_index RENAME COLUMN id TO day_index_id; +ALTER TABLE yore.day_file RENAME COLUMN id TO day_file_id; +ALTER TABLE yore.day_file RENAME COLUMN day_id TO day_index_id; + +-- migrate:down +ALTER TABLE yore.day_index RENAME COLUMN day_index_id TO id; +ALTER TABLE yore.day_file RENAME COLUMN day_file_id TO id; +ALTER TABLE yore.day_file RENAME COLUMN day_index_id TO day_id; diff --git a/db/schema.sql b/db/schema.sql index d434642..0f99769 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -35,8 +35,8 @@ CREATE TABLE public.schema_migrations ( -- CREATE TABLE yore.day_file ( - id bigint NOT NULL, - day_id bigint, + day_file_id bigint NOT NULL, + day_index_id bigint, relative_path text NOT NULL ); @@ -45,7 +45,7 @@ CREATE TABLE yore.day_file ( -- Name: day_file_id_seq; Type: SEQUENCE; Schema: yore; Owner: - -- -ALTER TABLE yore.day_file ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( +ALTER TABLE yore.day_file ALTER COLUMN day_file_id ADD GENERATED ALWAYS AS IDENTITY ( SEQUENCE NAME yore.day_file_id_seq START WITH 1 INCREMENT BY 1 @@ -60,7 +60,7 @@ ALTER TABLE yore.day_file ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( -- CREATE TABLE yore.day_index ( - id bigint NOT NULL, + day_index_id bigint NOT NULL, day date NOT NULL ); @@ -69,7 +69,7 @@ CREATE TABLE yore.day_index ( -- Name: day_index_id_seq; Type: SEQUENCE; Schema: yore; Owner: - -- -ALTER TABLE yore.day_index ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY ( +ALTER TABLE yore.day_index ALTER COLUMN day_index_id ADD GENERATED ALWAYS AS IDENTITY ( SEQUENCE NAME yore.day_index_id_seq START WITH 1 INCREMENT BY 1 @@ -92,7 +92,7 @@ ALTER TABLE ONLY public.schema_migrations -- ALTER TABLE ONLY yore.day_file - ADD CONSTRAINT day_file_pkey PRIMARY KEY (id); + ADD CONSTRAINT day_file_pkey PRIMARY KEY (day_file_id); -- @@ -108,7 +108,7 @@ ALTER TABLE ONLY yore.day_index -- ALTER TABLE ONLY yore.day_index - ADD CONSTRAINT day_index_pkey PRIMARY KEY (id); + ADD CONSTRAINT day_index_pkey PRIMARY KEY (day_index_id); -- @@ -116,7 +116,7 @@ ALTER TABLE ONLY yore.day_index -- ALTER TABLE ONLY yore.day_file - ADD CONSTRAINT day_file_day_id_fkey FOREIGN KEY (day_id) REFERENCES yore.day_index(id); + ADD CONSTRAINT day_file_day_id_fkey FOREIGN KEY (day_index_id) REFERENCES yore.day_index(day_index_id); -- @@ -130,4 +130,5 @@ ALTER TABLE ONLY yore.day_file INSERT INTO public.schema_migrations (version) VALUES ('20250728054639'), - ('20250728060412'); + ('20250728060412'), + ('20250729075246'); diff --git a/src/Yore/DB.hs b/src/Yore/DB.hs index 5a5d4fb..d015e28 100644 --- a/src/Yore/DB.hs +++ b/src/Yore/DB.hs @@ -27,13 +27,13 @@ getTables :: Opium.Connection -> IO (Either Opium.Error [Table]) getTables = Opium.fetch_ "SELECT table_schema AS schema, table_name AS name FROM information_schema.tables" data DayIndex = DayIndex - { id :: Int + { day_index_id :: Int , day :: Day } deriving (Show, Generic, Opium.FromRow) data DayFile = DayFile - { id :: Int - , day_id :: Int + { day_file_id :: Int + , day_index_id :: Int , relative_path :: String } deriving (Show, Generic, Opium.FromRow) @@ -46,7 +46,7 @@ createDayIndex date = ex runIdentity . createDayFile :: Int -> FilePath -> Opium.Connection -> IO (Either Opium.Error ()) createDayFile dayId path = Opium.execute - "INSERT INTO yore.day_file (day_id, relative_path) VALUES ($1, $2)" (dayId, path) + "INSERT INTO yore.day_file (day_index_id, relative_path) VALUES ($1, $2)" (dayId, path) readDayIndex :: Day -> Opium.Connection -> IO (Either Opium.Error (Maybe DayIndex)) readDayIndex date = @@ -57,7 +57,7 @@ readDayIndex date = readDayPaths :: Day -> Opium.Connection -> IO (Either Opium.Error [(DayIndex, DayFile)]) readDayPaths date = Opium.fetch - "SELECT * FROM yore.day_index LEFT JOIN yore.day_file ON day_index.id = day_id WHERE day = $1" + "SELECT * FROM yore.day_index LEFT JOIN yore.day_file USING (day_index_id) WHERE day = $1" (Identity date) ex :: (a -> b) -> IO (Either e a) -> IO (Either e b) diff --git a/src/Yore/Index.hs b/src/Yore/Index.hs index 6c52db9..03d953e 100644 --- a/src/Yore/Index.hs +++ b/src/Yore/Index.hs @@ -15,7 +15,7 @@ createEntries :: Day -> [FilePath] -> Opium.Connection -> IO () createEntries date urls conn = do confidently $ Opium.execute_ "BEGIN" conn dayIndex <- confidently $ DB.createDayIndex date conn - forM_ urls $ \url -> confidently $ DB.createDayFile dayIndex.id url conn + forM_ urls $ \url -> confidently $ DB.createDayFile dayIndex.day_index_id url conn confidently $ Opium.execute_ "COMMIT" conn confidently :: Exception e => IO (Either e a) -> IO a