Daniel O'Connell 072e0b3f4d migrations
2021-03-13 12:45:24 +01:00

63 lines
1.6 KiB
Clojure

{:up ["CREATE EXTENSION pgcrypto;"
"CREATE TABLE users (
id SERIAL,
name VARCHAR(256) UNIQUE,
password VARCHAR(256),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY(id)
);"
"CREATE TABLE customers (
id SERIAL,
name VARCHAR(512),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted BOOLEAN,
user_id INT,
PRIMARY KEY(id),
UNIQUE(name, user_id),
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
);"
"CREATE TABLE products (
id SERIAL,
name VARCHAR(512),
amount NUMERIC,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted BOOLEAN,
user_id INT,
PRIMARY KEY(id),
UNIQUE(name, user_id),
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
);"
"CREATE TYPE order_state AS ENUM('waiting', 'fulfilled', 'canceled');"
"CREATE TABLE orders (
id SERIAL,
customer_id INT,
notes TEXT,
status order_state DEFAULT 'waiting',
order_date TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
user_id INT,
PRIMARY KEY(id),
CONSTRAINT fk_customer FOREIGN KEY(customer_id) REFERENCES customers(id),
CONSTRAINT fk_users FOREIGN KEY(user_id) REFERENCES users(id)
);"
"CREATE TABLE order_products (
id SERIAL,
order_id INT,
product_id INT,
amount NUMERIC,
PRIMARY KEY(id),
CONSTRAINT fk_order FOREIGN KEY(order_id) REFERENCES orders(id),
CONSTRAINT fk_product FOREIGN KEY(product_id) REFERENCES products(id)
);"]
:down ["DROP TABLE order_products"
"DROP TABLE products"
"DROP TABLE orders"
"DROP TYPE order_state"
"DROP TABLE customers"
"DROP TABLE users"
"DROP EXTENSION pgcrypto"]}