CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE accounts (
    id serial unique not null primary key,
    login text not null,
    pass text not null
);

CREATE TYPE "Role" AS ENUM (
    'User',
    'Admin'
);

CREATE TYPE "LocalBusinessState" AS ENUM (
    'Pending',
    'Approved',
    'Banned',
    'Pinned',
    'Internal'
);

CREATE TABLE tokens (
    id serial unique not null primary key,
    claims jsonb not null,
    iss text not null default 'oswilno', /* issuer */
    sub int references accounts (id), /* subject */
    aud text not null default 'public', /* audience */
    exp timestamp not null, /* expiration time */
    nbt timestamp not null default now(), /* not before time */
    iat timestamp not null default now(), /* issued at time */
    jti uuid not null unique, /* JWT ID - unique */
    role "Role" not null default 'User'
);

CREATE TABLE local_businesses (
    id serial unique not null primary key,
    owner_id int references accounts (id) not null,
    name text not null,
    description text not null,
    state "LocalBusinessState" not null default 'Pending'
);

CREATE TABLE local_business_items (
    id serial unique not null primary key,
    local_business_id int references local_businesses (id) not null,
    name text not null,
    price bigint not null,
    item_order int not null
);
