mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 21:41:55 +00:00
92 lines
2.4 KiB
PL/PgSQL
92 lines
2.4 KiB
PL/PgSQL
BEGIN;
|
|
|
|
CREATE TABLE kandang_groups (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
name VARCHAR(50) NOT NULL,
|
|
status VARCHAR(20) NOT NULL,
|
|
location_id BIGINT NOT NULL REFERENCES locations (id) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
pic_id BIGINT REFERENCES users (id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW (),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW (),
|
|
deleted_at TIMESTAMPTZ,
|
|
created_by BIGINT REFERENCES users (id) ON DELETE SET NULL ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE UNIQUE INDEX kandang_groups_name_unique ON kandang_groups (name)
|
|
WHERE
|
|
deleted_at IS NULL;
|
|
|
|
ALTER TABLE kandangs
|
|
ADD COLUMN kandang_group_id BIGINT;
|
|
|
|
CREATE TEMP TABLE tmp_kandang_group_map (
|
|
kandang_id BIGINT PRIMARY KEY,
|
|
kandang_group_id BIGINT NOT NULL
|
|
) ON COMMIT DROP;
|
|
|
|
INSERT INTO tmp_kandang_group_map (kandang_id, kandang_group_id)
|
|
SELECT
|
|
k.id,
|
|
nextval(pg_get_serial_sequence('kandang_groups', 'id'))
|
|
FROM kandangs k
|
|
ORDER BY
|
|
k.id;
|
|
|
|
INSERT INTO kandang_groups (
|
|
id,
|
|
name,
|
|
status,
|
|
location_id,
|
|
pic_id,
|
|
created_at,
|
|
updated_at,
|
|
deleted_at,
|
|
created_by
|
|
)
|
|
SELECT
|
|
m.kandang_group_id,
|
|
k.name,
|
|
k.status,
|
|
k.location_id,
|
|
CASE WHEN pic.id IS NOT NULL THEN k.pic_id ELSE NULL END,
|
|
k.created_at,
|
|
k.updated_at,
|
|
k.deleted_at,
|
|
CASE WHEN creator.id IS NOT NULL THEN k.created_by ELSE NULL END
|
|
FROM kandangs k
|
|
JOIN tmp_kandang_group_map m ON m.kandang_id = k.id
|
|
LEFT JOIN users pic ON pic.id = k.pic_id
|
|
LEFT JOIN users creator ON creator.id = k.created_by
|
|
ORDER BY
|
|
k.id;
|
|
|
|
UPDATE kandangs k
|
|
SET kandang_group_id = m.kandang_group_id
|
|
FROM tmp_kandang_group_map m
|
|
WHERE
|
|
m.kandang_id = k.id;
|
|
|
|
ALTER TABLE daily_checklists
|
|
DROP CONSTRAINT IF EXISTS fk_daily_checklists_kandang;
|
|
|
|
UPDATE daily_checklists dc
|
|
SET kandang_id = m.kandang_group_id
|
|
FROM tmp_kandang_group_map m
|
|
WHERE
|
|
dc.kandang_id = m.kandang_id;
|
|
|
|
ALTER TABLE daily_checklists
|
|
ADD CONSTRAINT fk_daily_checklists_kandang
|
|
FOREIGN KEY (kandang_id) REFERENCES kandang_groups (id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE kandangs
|
|
ALTER COLUMN kandang_group_id SET NOT NULL;
|
|
|
|
ALTER TABLE kandangs
|
|
ADD CONSTRAINT fk_kandangs_kandang_group
|
|
FOREIGN KEY (kandang_group_id) REFERENCES kandang_groups (id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
CREATE INDEX idx_kandangs_kandang_group_id ON kandangs (kandang_group_id);
|
|
|
|
COMMIT;
|