Use ${table}_id for primary keys

This commit is contained in:
Paul Brinkmeier 2025-07-29 10:02:03 +02:00
parent 0fc2dee652
commit 70861b1339
4 changed files with 25 additions and 15 deletions

View File

@ -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;

View File

@ -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');

View File

@ -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)

View File

@ -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