Use ${table}_id for primary keys
This commit is contained in:
parent
0fc2dee652
commit
70861b1339
9
db/migrations/20250729075246_uniform_ids.sql
Normal file
9
db/migrations/20250729075246_uniform_ids.sql
Normal 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;
|
||||
@ -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');
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user