mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
first commit add master data kandang group
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user