feat: implement wish list and wish features including creation, retrieval, and updates;
fix: modify ban logic to respect expiration timestamps and pardon flags; refactor: change boolean fields to non-nullable in models and use COALESCE for optional updates in SQL
This commit is contained in:
@@ -22,7 +22,7 @@ CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
||||
CREATE TABLE IF NOT EXISTS "users" (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
username VARCHAR(20) UNIQUE NOT NULL,
|
||||
verified BOOLEAN DEFAULT FALSE,
|
||||
verified BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
registration_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
role INTEGER NOT NULL DEFAULT 1, -- enum user
|
||||
deleted BOOLEAN DEFAULT FALSE
|
||||
@@ -35,7 +35,7 @@ CREATE TABLE IF NOT EXISTS "banned_users" (
|
||||
reason VARCHAR(512),
|
||||
expires_at TIMESTAMP,
|
||||
banned_by VARCHAR(20) DEFAULT 'system',
|
||||
pardoned BOOLEAN DEFAULT FALSE,
|
||||
pardoned BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
pardoned_by VARCHAR(20)
|
||||
);
|
||||
|
||||
@@ -55,14 +55,14 @@ CREATE TABLE IF NOT EXISTS "confirmation_codes" (
|
||||
code_type INTEGER NOT NULL CHECK (code_type IN (0, 1)),
|
||||
code_hash VARCHAR(512) NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + INTERVAL '10 minutes',
|
||||
used BOOLEAN DEFAULT FALSE,
|
||||
deleted BOOLEAN DEFAULT FALSE
|
||||
used BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
deleted BOOLEAN NOT NULL DEFAULT FALSE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sessions" (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
guid UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
guid UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(175),
|
||||
platform VARCHAR(175),
|
||||
latest_ip VARCHAR(16),
|
||||
@@ -77,7 +77,7 @@ CREATE TABLE IF NOT EXISTS "profiles" (
|
||||
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name VARCHAR(75) NOT NULL,
|
||||
bio VARCHAR(512) NOT NULL DEFAULT '',
|
||||
avatar_url VARCHAR(255) NOT NULL DEFAULT '',
|
||||
avatar_url VARCHAR(512) NOT NULL DEFAULT '',
|
||||
birthday TIMESTAMP,
|
||||
color VARCHAR(7) NOT NULL DEFAULT '#254333',
|
||||
color_grad VARCHAR(7) NOT NULL DEFAULT '#691E4D'
|
||||
@@ -93,4 +93,30 @@ CREATE TABLE IF NOT EXISTS "profile_settings" (
|
||||
hide_dates BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
captcha BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
followers_only_interaction BOOLEAN NOT NULL DEFAULT FALSE
|
||||
)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "wish_lists" (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
guid UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),
|
||||
profile_id BIGINT UNIQUE NOT NULL REFERENCES profiles(id) ON DELETE CASCADE,
|
||||
hidden BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
name VARCHAR(32) NOT NULL DEFAULT 'Wishes',
|
||||
icon_name VARCHAR(64),
|
||||
color VARCHAR(7),
|
||||
color_grad VARCHAR(7),
|
||||
deleted BOOLEAN NOT NULL DEFAULT FALSE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "wishes" (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
guid UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),
|
||||
wish_list_id BIGINT UNIQUE NOT NULL REFERENCES wish_lists(id) ON DELETE CASCADE,
|
||||
name VARCHAR(32) NOT NULL DEFAULT 'New wish',
|
||||
description VARCHAR(1000) NOT NULL DEFAULT '',
|
||||
picture_url VARCHAR(512) NOT NULL DEFAULT '',
|
||||
stars SMALLINT NOT NULL DEFAULT 3 CHECK (stars BETWEEN 1 AND 5),
|
||||
creation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
fulfilled BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
fulfilled_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted BOOLEAN NOT NULL DEFAULT FALSE
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user