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 (
|
CREATE TABLE yore.day_file (
|
||||||
id bigint NOT NULL,
|
day_file_id bigint NOT NULL,
|
||||||
day_id bigint,
|
day_index_id bigint,
|
||||||
relative_path text NOT NULL
|
relative_path text NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ CREATE TABLE yore.day_file (
|
|||||||
-- Name: day_file_id_seq; Type: SEQUENCE; Schema: yore; Owner: -
|
-- 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
|
SEQUENCE NAME yore.day_file_id_seq
|
||||||
START WITH 1
|
START WITH 1
|
||||||
INCREMENT BY 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 (
|
CREATE TABLE yore.day_index (
|
||||||
id bigint NOT NULL,
|
day_index_id bigint NOT NULL,
|
||||||
day date 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: -
|
-- 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
|
SEQUENCE NAME yore.day_index_id_seq
|
||||||
START WITH 1
|
START WITH 1
|
||||||
INCREMENT BY 1
|
INCREMENT BY 1
|
||||||
@ -92,7 +92,7 @@ ALTER TABLE ONLY public.schema_migrations
|
|||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY yore.day_file
|
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
|
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
|
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
|
INSERT INTO public.schema_migrations (version) VALUES
|
||||||
('20250728054639'),
|
('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"
|
getTables = Opium.fetch_ "SELECT table_schema AS schema, table_name AS name FROM information_schema.tables"
|
||||||
|
|
||||||
data DayIndex = DayIndex
|
data DayIndex = DayIndex
|
||||||
{ id :: Int
|
{ day_index_id :: Int
|
||||||
, day :: Day
|
, day :: Day
|
||||||
} deriving (Show, Generic, Opium.FromRow)
|
} deriving (Show, Generic, Opium.FromRow)
|
||||||
|
|
||||||
data DayFile = DayFile
|
data DayFile = DayFile
|
||||||
{ id :: Int
|
{ day_file_id :: Int
|
||||||
, day_id :: Int
|
, day_index_id :: Int
|
||||||
, relative_path :: String
|
, relative_path :: String
|
||||||
} deriving (Show, Generic, Opium.FromRow)
|
} deriving (Show, Generic, Opium.FromRow)
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ createDayIndex date = ex runIdentity .
|
|||||||
createDayFile :: Int -> FilePath -> Opium.Connection -> IO (Either Opium.Error ())
|
createDayFile :: Int -> FilePath -> Opium.Connection -> IO (Either Opium.Error ())
|
||||||
createDayFile dayId path =
|
createDayFile dayId path =
|
||||||
Opium.execute
|
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 :: Day -> Opium.Connection -> IO (Either Opium.Error (Maybe DayIndex))
|
||||||
readDayIndex date =
|
readDayIndex date =
|
||||||
@ -57,7 +57,7 @@ readDayIndex date =
|
|||||||
readDayPaths :: Day -> Opium.Connection -> IO (Either Opium.Error [(DayIndex, DayFile)])
|
readDayPaths :: Day -> Opium.Connection -> IO (Either Opium.Error [(DayIndex, DayFile)])
|
||||||
readDayPaths date =
|
readDayPaths date =
|
||||||
Opium.fetch
|
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)
|
(Identity date)
|
||||||
|
|
||||||
ex :: (a -> b) -> IO (Either e a) -> IO (Either e b)
|
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
|
createEntries date urls conn = do
|
||||||
confidently $ Opium.execute_ "BEGIN" conn
|
confidently $ Opium.execute_ "BEGIN" conn
|
||||||
dayIndex <- confidently $ DB.createDayIndex date 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 $ Opium.execute_ "COMMIT" conn
|
||||||
|
|
||||||
confidently :: Exception e => IO (Either e a) -> IO a
|
confidently :: Exception e => IO (Either e a) -> IO a
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user