-- SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
--
-- 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);
