nidus-sync/db/migrations/00057_csv_pool_upload.sql

86 lines
2.5 KiB
MySQL
Raw Permalink Normal View History

2026-02-08 04:02:12 +00:00
-- +goose Up
CREATE SCHEMA fileupload;
CREATE TYPE fileupload.FileStatusType AS ENUM (
'error',
'parsed',
'uploaded'
2026-02-08 04:02:12 +00:00
);
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,
2026-02-08 04:02:12 +00:00
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,
2026-02-08 04:02:12 +00:00
file_id INTEGER REFERENCES fileupload.file(id) NOT NULL,
rowcount INTEGER NOT NULL,
2026-02-08 04:02:12 +00:00
type_ fileupload.CSVType NOT NULL,
PRIMARY KEY (file_id)
);
CREATE TABLE fileupload.error_file (
2026-02-08 04:02:12 +00:00
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,
2026-02-08 04:02:12 +00:00
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)
);
2026-02-08 04:02:12 +00:00
-- +goose Down
DROP TABLE fileupload.pool;
DROP TYPE fileupload.PoolConditionType;
DROP TABLE fileupload.error_csv;
DROP TABLE fileupload.error_file;
2026-02-08 04:02:12 +00:00
DROP TABLE fileupload.csv;
DROP TABLE fileupload.file;
DROP TYPE fileupload.CSVType;
DROP TYPE fileupload.FileStatusType;
DROP SCHEMA fileupload;