compareware/Application/Schema.sql

29 lines
1.3 KiB
MySQL
Raw Permalink Normal View History

2024-04-11 16:25:09 +00:00
CREATE FUNCTION set_updated_at_to_now() RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ language plpgsql;
2023-04-16 10:31:32 +00:00
-- Your database schema. Use the Schema Designer at http://localhost:8001/ to add some tables.
2024-04-11 16:25:09 +00:00
CREATE TABLE items (
2023-04-16 10:32:51 +00:00
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY NOT NULL,
2024-04-11 16:25:09 +00:00
wikidata_id TEXT NOT NULL UNIQUE,
description TEXT DEFAULT '' NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL
2023-04-16 10:32:51 +00:00
);
CREATE TABLE tags (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY NOT NULL,
2024-04-11 16:25:09 +00:00
item_id UUID NOT NULL,
2023-04-16 10:32:51 +00:00
name TEXT NOT NULL,
2024-04-11 16:25:09 +00:00
value TEXT NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL
2023-04-16 10:32:51 +00:00
);
2024-04-11 16:25:09 +00:00
CREATE INDEX tags_item_id_index ON tags (item_id);
CREATE INDEX tags_created_at_index ON tags (created_at);
CREATE TRIGGER update_tags_updated_at BEFORE UPDATE ON tags FOR EACH ROW EXECUTE FUNCTION set_updated_at_to_now();
CREATE INDEX items_created_at_index ON items (created_at);
CREATE TRIGGER update_items_updated_at BEFORE UPDATE ON items FOR EACH ROW EXECUTE FUNCTION set_updated_at_to_now();
ALTER TABLE tags ADD CONSTRAINT tags_ref_item_id FOREIGN KEY (item_id) REFERENCES items (id) ON DELETE CASCADE;