-- +goose Up CREATE SCHEMA fileupload; CREATE TYPE fileupload.FileStatusType AS ENUM ( 'error', 'parsed', 'uploaded' ); CREATE TYPE fileupload.CSVType AS ENUM ( 'PoolList' ); CREATE TABLE fileupload.file ( id SERIAL, content_type TEXT NOT NULL, created TIMESTAMP WITHOUT TIME ZONE NOT NULL, creator_id INTEGER REFERENCES user_(id) NOT NULL, deleted TIMESTAMP WITHOUT TIME ZONE, name TEXT NOT NULL, organization_id INTEGER REFERENCES organization(id) NOT NULL, status fileupload.FileStatusType NOT NULL, size_bytes INTEGER NOT NULL, file_uuid uuid NOT NULL, PRIMARY KEY(id) ); CREATE TABLE fileupload.csv ( committed TIMESTAMP WITHOUT TIME ZONE, file_id INTEGER REFERENCES fileupload.file(id) NOT NULL, rowcount INTEGER NOT NULL, type_ fileupload.CSVType NOT NULL, PRIMARY KEY (file_id) ); CREATE TABLE fileupload.error_file ( file_id INTEGER REFERENCES fileupload.file(id) NOT NULL, id SERIAL, message TEXT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE fileupload.error_csv ( col INTEGER NOT NULL, csv_file_id INTEGER REFERENCES fileupload.csv(file_id) NOT NULL, id SERIAL, line INTEGER NOT NULL, message TEXT NOT NULL, PRIMARY KEY (id) ); CREATE TYPE fileupload.PoolConditionType AS ENUM ( 'green', 'murky', 'blue', 'empty', 'unknown' ); CREATE TABLE fileupload.pool ( address_city TEXT NOT NULL, address_postal_code TEXT NOT NULL, address_street TEXT NOT NULL, committed BOOLEAN NOT NULL, -- Whether or not its just proposed before a CSV file is committed condition fileupload.PoolConditionType NOT NULL, created TIMESTAMP WITHOUT TIME ZONE NOT NULL, creator_id INTEGER REFERENCES user_(id) NOT NULL, csv_file INTEGER REFERENCES fileupload.csv(file_id) NOT NULL, deleted TIMESTAMP WITHOUT TIME ZONE, geom geometry(Point, 3857), h3cell h3index, id SERIAL, is_in_district BOOLEAN NOT NULL, -- Whether or not the pool is within the district is_new BOOLEAN NOT NULL, -- Whether or not we already have a pool in the system for this row notes TEXT NOT NULL, organization_id INTEGER REFERENCES organization(id) NOT NULL, property_owner_name TEXT NOT NULL, property_owner_phone comms.phone, resident_owned BOOLEAN, resident_phone comms.phone, version integer, PRIMARY KEY (id, version) ); -- +goose Down DROP TABLE fileupload.pool; DROP TYPE fileupload.PoolConditionType; DROP TABLE fileupload.error_csv; DROP TABLE fileupload.error_file; DROP TABLE fileupload.csv; DROP TABLE fileupload.file; DROP TYPE fileupload.CSVType; DROP TYPE fileupload.FileStatusType; DROP SCHEMA fileupload;