71 lines
2.2 KiB
Perl
71 lines
2.2 KiB
Perl
package MyRedland::DB::Migrations;
|
|
|
|
use v5.34.1;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
sub MIGRATIONS {
|
|
return (
|
|
'CREATE TABLE options (
|
|
name TEXT PRIMARY KEY,
|
|
value TEXT
|
|
)',
|
|
'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"',
|
|
'CREATE TABLE paths (
|
|
path TEXT PRIMARY KEY,
|
|
first_seen timestamp DEFAULT NOW()
|
|
)',
|
|
'CREATE TABLE requests (
|
|
uuid UUID DEFAULT uuid_generate_v4(),
|
|
remote_address TEXT NOT NULL,
|
|
user_agent TEXT NOT NULL,
|
|
params JSON NOT NULL,
|
|
date timestamp DEFAULT NOW(),
|
|
path TEXT,
|
|
FOREIGN KEY (path) REFERENCES paths(path)
|
|
)',
|
|
'ALTER TABLE requests ADD PRIMARY KEY (uuid)',
|
|
'CREATE TABLE lusers (
|
|
uuid UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
username TEXT NOT NULL UNIQUE,
|
|
email TEXT NOT NULL UNIQUE,
|
|
verified BOOLEAN DEFAULT false,
|
|
password TEXT NOT NULL,
|
|
mail_verification_payload TEXT NOT NULL
|
|
)',
|
|
'ALTER TABLE lusers ADD COLUMN avatar TEXT DEFAULT \'\'',
|
|
'ALTER TABLE lusers ADD COLUMN mail_verification_expiration TIMESTAMP DEFAULT NOW() + interval \'1 day\'',
|
|
'ALTER TABLE lusers ADD COLUMN creation_date TIMESTAMP DEFAULT NOW()',
|
|
'ALTER TABLE lusers ADD COLUMN last_access TIMESTAMP DEFAULT NOW()',
|
|
'ALTER TABLE lusers ADD COLUMN stripe_customer_id TEXT DEFAULT NULL',
|
|
'CREATE TABLE subscription_orders (
|
|
uuid UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
product_id TEXT NOT NULL,
|
|
user_uuid UUID NOT NULL,
|
|
payment_intent_id TEXT NOT NULL,
|
|
client_secret TEXT NOT NULL,
|
|
renew_auto BOOLEAN NOT NULL,
|
|
paid BOOLEAN DEFAULT false,
|
|
create_date timestamp DEFAULT NOW(),
|
|
to_pay INTEGER NOT NULL,
|
|
FOREIGN KEY (user_uuid) REFERENCES lusers(uuid)
|
|
)',
|
|
'CREATE TABLE public_servers (
|
|
uuid UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
identifier TEXT NOT NULL UNIQUE,
|
|
name TEXT NOT NULL
|
|
)',
|
|
'INSERT INTO public_servers (name, identifier) VALUES (\'Principal Server\', \'server1\')',
|
|
'CREATE TABLE subscriptions (
|
|
public_server_uuid UUID NOT NULL,
|
|
user_uuid UUID NOT NULL,
|
|
valid_until timestamp NOT NULL,
|
|
renew_auto BOOLEAN NOT NULL,
|
|
PRIMARY KEY (public_server_uuid, user_uuid)
|
|
)',
|
|
'ALTER TABLE subscription_orders ADD COLUMN save_card BOOLEAN DEFAULT true',
|
|
);
|
|
}
|
|
1;
|