CREATE FUNCTION set_updated_at_to_now() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ language plpgsql; -- Your database schema. Use the Schema Designer at http://localhost:8001/ to add some tables. CREATE TABLE items ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY NOT NULL, 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 ); CREATE TABLE tags ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY NOT NULL, item_id UUID NOT NULL, name TEXT NOT NULL, value TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL, updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL ); 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;