feat: 补齐消毒、种源与二维码身份链
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE batches DROP COLUMN IF EXISTS seed_source_id;
|
||||
DROP TABLE IF EXISTS identity_links CASCADE;
|
||||
DROP TABLE IF EXISTS disinfection_records CASCADE;
|
||||
DROP TABLE IF EXISTS seed_sources CASCADE;
|
||||
@@ -0,0 +1,64 @@
|
||||
CREATE TABLE IF NOT EXISTS seed_sources (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
public_id varchar(64) NOT NULL,
|
||||
batch_id uuid,
|
||||
parent_id uuid,
|
||||
supplier varchar(128) NOT NULL,
|
||||
seed_batch_no varchar(64) NOT NULL,
|
||||
quarantine_no varchar(64),
|
||||
variety varchar(64),
|
||||
certificate_url varchar(512),
|
||||
entry_at timestamptz,
|
||||
note text,
|
||||
created_by uuid,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_seed_sources_public_id ON seed_sources (public_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_seed_sources_batch_id ON seed_sources (batch_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_seed_sources_parent_id ON seed_sources (parent_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS disinfection_records (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
room_id uuid,
|
||||
batch_id uuid,
|
||||
kind varchar(16) NOT NULL DEFAULT 'plan',
|
||||
plan_id uuid,
|
||||
agent varchar(128) NOT NULL,
|
||||
concentration varchar(64) NOT NULL,
|
||||
amount varchar(64),
|
||||
planned_at timestamptz,
|
||||
executed_at timestamptz,
|
||||
executor_id uuid,
|
||||
reviewed_at timestamptz,
|
||||
reviewer_id uuid,
|
||||
photo_url varchar(512),
|
||||
note text,
|
||||
created_by uuid,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_disinfection_records_room_id ON disinfection_records (room_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_disinfection_records_batch_id ON disinfection_records (batch_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_disinfection_records_plan_id ON disinfection_records (plan_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS identity_links (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
public_id varchar(64) NOT NULL,
|
||||
entity_type varchar(16) NOT NULL,
|
||||
entity_id varchar(128) NOT NULL,
|
||||
version integer NOT NULL DEFAULT 1,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_links_public_id ON identity_links (public_id);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_identity_links_entity ON identity_links (entity_type, entity_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_identity_links_entity_type ON identity_links (entity_type);
|
||||
|
||||
ALTER TABLE batches
|
||||
ADD COLUMN IF NOT EXISTS seed_source_id uuid;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_batches_seed_source_id ON batches (seed_source_id);
|
||||
Reference in New Issue
Block a user