CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    uid VARCHAR UNIQUE NOT NULL, -- username as unique identifier
    email VARCHAR UNIQUE,
    full_name VARCHAR,
    displayname VARCHAR,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE sessions (
    id SERIAL PRIMARY KEY,
    user_id INTEGER NOT NULL,
    title VARCHAR,
    token VARCHAR NOT NULL UNIQUE,
    password VARCHAR,
    last_activity TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    expires TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    FOREIGN KEY (user_id) REFERENCES users (id)
);

CREATE TABLE session_ips (
    id SERIAL PRIMARY KEY,
    session_id INTEGER NOT NULL,
    ip_address INET NOT NULL,
    access_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (session_id) REFERENCES sessions (id)
);

