You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
notearoni/migrations/20220912062838_add_notes_ta...

41 lines
1.1 KiB

CREATE TABLE list (
id INT GENERATED ALWAYS AS IDENTITY,
owner_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
CONSTRAINT fk_owner
FOREIGN KEY(owner_id)
REFERENCES users(id)
);
CREATE TABLE note (
id INT GENERATED ALWAYS AS IDENTITY,
list_id INT NOT NULL, -- references a list
writer_id INT NOT NULL, -- references a user
content VARCHAR(255) NOT NULL, -- about one twitter post worth
modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- the last time this item was modified
due_at TIMESTAMPTZ, -- a nullable time at which the task needs to be complete
PRIMARY KEY(id),
CONSTRAINT fk_writer
FOREIGN KEY(writer_id)
REFERENCES users(id),
CONSTRAINT fk_list
FOREIGN KEY(list_id)
REFERENCES list(id)
);
-- The following section automatically updates the "modified" column when a record is updated
CREATE OR REPLACE FUNCTION trigger_set_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified_at = NOW();
RETURN NEW;
END
$$ LANGUAGE plpgsql;
CREATE TRIGGER set_timestamp
BEFORE UPDATE ON note
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_timestamp();