-- SPDX-FileCopyrightText: 2024 Aravinth Manivannan -- -- SPDX-License-Identifier: AGPL-3.0-or-later CREATE TABLE IF NOT EXISTS events ( aggregate_type text NOT NULL, aggregate_id text NOT NULL, sequence bigint CHECK (sequence >= 0) NOT NULL, event_type text NOT NULL, event_version text NOT NULL, payload json NOT NULL, metadata json NOT NULL, timestamp timestamp with time zone DEFAULT (CURRENT_TIMESTAMP), PRIMARY KEY (aggregate_type, aggregate_id, sequence) ); CREATE TABLE IF NOT EXISTS user_query ( version bigint CHECK (version >= 0) NOT NULL, first_name TEXT NOT NULL, last_name TEXT NOT NULL, user_id UUID NOT NULL UNIQUE, email TEXT NOT NULL UNIQUE, hashed_password TEXT NOT NULL, is_admin BOOLEAN NOT NULL DEFAULT FALSE, is_verified BOOLEAN NOT NULL DEFAULT FALSE, deleted BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (user_id) ); CREATE UNIQUE INDEX IF NOT EXISTS user_email_index ON user_query (email);