-- Initialize Drupal.js database schema -- Users table CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), username TEXT UNIQUE NOT NULL, email TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Content types table CREATE TABLE content_types ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), name TEXT UNIQUE NOT NULL, description TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Content table CREATE TABLE content ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), content_type_id UUID REFERENCES content_types(id), title TEXT NOT NULL, body TEXT, author_id UUID REFERENCES users(id), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, published_at TIMESTAMP WITH TIME ZONE ); -- Taxonomies table CREATE TABLE taxonomies ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), name TEXT UNIQUE NOT NULL, description TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Terms table CREATE TABLE terms ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), taxonomy_id UUID REFERENCES taxonomies(id), name TEXT NOT NULL, description TEXT, parent_id UUID REFERENCES terms(id), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Content-Term relationship table CREATE TABLE content_terms ( content_id UUID REFERENCES content(id), term_id UUID REFERENCES terms(id), PRIMARY KEY (content_id, term_id) ); -- Comments table CREATE TABLE comments ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), content_id UUID REFERENCES content(id), author_id UUID REFERENCES users(id), body TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Menus table CREATE TABLE menus ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), name TEXT UNIQUE NOT NULL, description TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Menu items table CREATE TABLE menu_items ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), menu_id UUID REFERENCES menus(id), parent_id UUID REFERENCES menu_items(id), title TEXT NOT NULL, link TEXT NOT NULL, weight INTEGER DEFAULT 0, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP );