| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- -- =============================================================================
- -- Embase Conference Abstract Scheduler — Tracking Table
- -- =============================================================================
- -- Run this script once on the target PostgreSQL database before the first
- -- scheduler execution.
- -- =============================================================================
- -- ---------------------------------------------------------------------------
- -- 1. Tracking table
- -- ---------------------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS tblEmbaseConferenceDispatch
- (
- Id BIGSERIAL PRIMARY KEY,
- SourceId BIGINT NOT NULL,
- LotId BIGINT NOT NULL,
- FileName VARCHAR(200) NOT NULL,
- DispatchDate TIMESTAMP NOT NULL,
- CreatedOn TIMESTAMP NOT NULL DEFAULT NOW()
- );
- COMMENT ON TABLE tblEmbaseConferenceDispatch IS 'Tracks conference abstract lots that have already been packaged and uploaded to SFTP.';
- COMMENT ON COLUMN tblEmbaseConferenceDispatch.SourceId IS 'Journal / source identifier (maps to tblsrmaster.sourceid).';
- COMMENT ON COLUMN tblEmbaseConferenceDispatch.LotId IS 'Lot that was included in the dispatched ZIP.';
- COMMENT ON COLUMN tblEmbaseConferenceDispatch.FileName IS 'Name of the generated ZIP file (e.g. emconflum0000007.zip).';
- COMMENT ON COLUMN tblEmbaseConferenceDispatch.DispatchDate IS 'UTC timestamp when the ZIP was successfully uploaded.';
- COMMENT ON COLUMN tblEmbaseConferenceDispatch.CreatedOn IS 'Row insertion timestamp.';
- -- ---------------------------------------------------------------------------
- -- 2. Indexes for common access patterns
- -- ---------------------------------------------------------------------------
- -- Used by the "NOT IN dispatch" exclusion sub-query
- CREATE INDEX IF NOT EXISTS idx_embase_conf_dispatch_lotid
- ON tblEmbaseConferenceDispatch (LotId);
- -- Used when auditing dispatches for a given source
- CREATE INDEX IF NOT EXISTS idx_embase_conf_dispatch_sourceid
- ON tblEmbaseConferenceDispatch (SourceId);
- -- Unique constraint: a lot should only be dispatched once
- ALTER TABLE tblEmbaseConferenceDispatch
- ADD CONSTRAINT uq_embase_conf_dispatch_lot UNIQUE (LotId);
- -- ---------------------------------------------------------------------------
- -- 3. Verification query — run after creation to confirm structure
- -- ---------------------------------------------------------------------------
- -- SELECT column_name, data_type, column_default
- -- FROM information_schema.columns
- -- WHERE table_name = 'tblembaseconferencedispatch'
- -- ORDER BY ordinal_position;
|