41 lines
1.4 KiB
SQL
41 lines
1.4 KiB
SQL
-- Master Database Schema
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE IF NOT EXISTS communities (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
name TEXT NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
username TEXT UNIQUE NOT NULL,
|
|
display_name TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS webauthn_credentials (
|
|
id BYTEA PRIMARY KEY,
|
|
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
public_key BYTEA NOT NULL,
|
|
attestation_type TEXT NOT NULL,
|
|
aaguid UUID NOT NULL,
|
|
sign_count UINT32 NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS community_members (
|
|
community_id UUID REFERENCES communities(id) ON DELETE CASCADE,
|
|
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
role TEXT NOT NULL DEFAULT 'admin', -- 'owner', 'admin'
|
|
PRIMARY KEY (community_id, user_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS storage_nodes (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
community_id UUID REFERENCES communities(id) ON DELETE CASCADE,
|
|
address TEXT NOT NULL, -- Internal cluster address or URL
|
|
status TEXT DEFAULT 'active',
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
|
);
|