File refs in one table
Added a file service Refactored evidence and vendor compliance associated services and resolvers Created SQL migration scripts Updated GraphQL schema accordingly and the UI components Removed unused methods and resolvers for evidence service Signed-off-by: Yannis Varni <yannis@edinomis.fr>
This commit is contained in:
committed by
Sacha Al Himdani
parent
3822b1916c
commit
ff7ba08fc1
41
pkg/coredata/migrations/20251003T132724Z.sql
Normal file
41
pkg/coredata/migrations/20251003T132724Z.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
ALTER TABLE evidences
|
||||
ADD COLUMN evidence_file_id text;
|
||||
|
||||
/* 10 is for FileEntityType */
|
||||
WITH
|
||||
evidence_files AS (
|
||||
SELECT
|
||||
e.id as evidence_id,
|
||||
generate_gid(decode_base64_unpadded(e.tenant_id), 25) as file_id,
|
||||
e.tenant_id,
|
||||
'probod' as bucket_name,
|
||||
e.mime_type,
|
||||
e.filename,
|
||||
e.object_key,
|
||||
e.size,
|
||||
e.created_at,
|
||||
e.updated_at
|
||||
FROM evidences e
|
||||
),
|
||||
inserted_files AS (
|
||||
INSERT INTO files (id, tenant_id, bucket_name, mime_type, file_name, file_key, file_size, created_at, updated_at)
|
||||
SELECT file_id, tenant_id, bucket_name, mime_type, filename, object_key::uuid, size, created_at, updated_at
|
||||
FROM evidence_files
|
||||
RETURNING id, tenant_id
|
||||
)
|
||||
|
||||
SELECT ef.evidence_id, ef.file_id
|
||||
INTO TEMP TABLE file_evidence_mapping
|
||||
FROM evidence_files ef;
|
||||
|
||||
UPDATE evidences
|
||||
SET evidence_file_id = fm.file_id
|
||||
FROM file_evidence_mapping fm
|
||||
WHERE evidences.id = fm.evidence_id;
|
||||
|
||||
|
||||
ALTER TABLE evidences
|
||||
ALTER COLUMN filename DROP NOT NULL,
|
||||
ALTER COLUMN mime_type DROP NOT NULL,
|
||||
ALTER COLUMN size DROP NOT NULL,
|
||||
ALTER COLUMN oject_key DROP NOT NULL;
|
||||
41
pkg/coredata/migrations/20251003T151644Z.sql
Normal file
41
pkg/coredata/migrations/20251003T151644Z.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
ALTER TABLE
|
||||
vendor_compliance_reports
|
||||
ADD COLUMN report_file_id text
|
||||
REFERENCES files(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
|
||||
WITH
|
||||
/* 25 is for FileEntityType */
|
||||
vcr_files AS (
|
||||
SELECT
|
||||
vcr.id as report_id,
|
||||
generate_gid(decode_base64_unpadded(vcr.tenant_id), 25) as file_id,
|
||||
vcr.tenant_id,
|
||||
'probod' as bucket_name,
|
||||
'application/pdf' as mime_type,
|
||||
vcr.report_name,
|
||||
vcr.file_key,
|
||||
vcr.file_size,
|
||||
vcr.created_at,
|
||||
vcr.updated_at
|
||||
FROM vendor_compliance_reports vcr
|
||||
),
|
||||
inserted_files AS (
|
||||
INSERT INTO files (id, tenant_id, bucket_name, mime_type, file_name, file_key, file_size, created_at, updated_at)
|
||||
SELECT file_id, tenant_id, bucket_name, mime_type, report_name, file_key::uuid, file_size, created_at, updated_at
|
||||
FROM vcr_files
|
||||
RETURNING id, tenant_id
|
||||
)
|
||||
SELECT vf.report_id, vf.file_id
|
||||
INTO TEMP TABLE file_vcr_mapping
|
||||
FROM vcr_files vf;
|
||||
|
||||
UPDATE vendor_compliance_reports
|
||||
SET report_file_id = fv.file_id
|
||||
FROM file_vcr_mapping fv
|
||||
WHERE vendor_compliance_reports.id = fv.report_id;
|
||||
|
||||
ALTER TABLE vendor_compliance_reports
|
||||
ALTER COLUMN file_key DROP NOT NULL,
|
||||
ALTER COLUMN file_size DROP NOT NULL;
|
||||
7
pkg/coredata/migrations/20251006T133729Z.sql
Normal file
7
pkg/coredata/migrations/20251006T133729Z.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
ALTER TABLE
|
||||
evidences
|
||||
ADD CONSTRAINT fk_evidence_file
|
||||
FOREIGN KEY (evidence_file_id)
|
||||
REFERENCES files(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
Reference in New Issue
Block a user