feat: update framework

This commit is contained in:
Rogee
2024-11-29 15:03:47 +08:00
parent f7d95418a2
commit 391f217bd8
17 changed files with 368 additions and 132 deletions

View File

@@ -0,0 +1,8 @@
package database
import (
"embed"
)
//go:embed migrations/*
var MigrationFS embed.FS

View File

@@ -0,0 +1,122 @@
-- +goose Up
-- +goose StatementBegin
-- table users
CREATE TABLE
users (
id SERIAL8 PRIMARY KEY,
open_id VARCHAR(128) NOT NULL,
union_id VARCHAR(128),
oauth jsonb ,
expire_in timestamp NOT NULL,
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL
);
CREATE INDEX idx_users_open_id ON users (open_id);
CREATE INDEX idx_users_union_id ON users (union_id);
-- table tenants
CREATE TABLE
tenants (
id SERIAL8 PRIMARY KEY,
name VARCHAR(128) NOT NULL,
slug VARCHAR(128) NOT NULL,
description VARCHAR(128),
expire_at timestamp NOT NULL,
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL
);
-- table users_tenants
CREATE TABLE
users_tenants (
id SERIAL8 PRIMARY KEY,
user_id INT8 NOT NULL,
tenant_id INT8 NOT NULL,
created_at timestamp NOT NULL
);
CREATE INDEX idx_users_tenants_user_id ON users_tenants (user_id);
CREATE INDEX idx_users_tenants_tenant_id ON users_tenants (tenant_id);
CREATE TABLE tenant_user_balances (
id SERIAL8 PRIMARY KEY,
user_id INT8 NOT NULL,
tenant_id INT8 NOT NULL,
balance INT8 NOT NULL
);
CREATE INDEX idx_tenant_user_balance_user_id ON tenant_user_balances (user_id);
CREATE INDEX idx_tenant_user_balance_tenant_id ON tenant_user_balances (tenant_id);
-- table user_balance_history
CREATE TABLE user_balance_histories (
id SERIAL8 PRIMARY KEY,
user_id INT8 NOT NULL,
tenant_id INT8 NOT NULL,
balance INT8 NOT NULL,
target jsonb ,
type VARCHAR(128) NOT NULL, -- charge, consume, refund
created_at timestamp NOT NULL
);
CREATE INDEX idx_user_balance_histories_user_id ON user_balance_histories (user_id);
CREATE INDEX idx_user_balance_histories_tenant_id ON user_balance_histories (tenant_id);
-- medias
CREATE TABLE
medias (
id SERIAL8 PRIMARY KEY,
tenant_id INT8 NOT NULL,
title VARCHAR(198) NOT NULL,
description VARCHAR(198) NOT NULL,
price INT8 NOT NULL,
discount INT8 NOT NULL,
publish BOOL NOT NULL,
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL
);
CREATE INDEX idx_medias_tenant_id ON medias (tenant_id);
CREATE INDEX idx_medias_title ON medias (title);
CREATE TABLE
media_resources (
id SERIAL8 PRIMARY KEY,
media_id INT8 NOT NULL,
type VARCHAR(128) NOT NULL,
source jsonb ,
size INT8 NOT NULL,
publish BOOL NOT NULL,
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL
);
CREATE INDEX idx_media_resources_media_id ON media_resources (media_id);
CREATE TABLE user_medias (
id SERIAL8 PRIMARY KEY,
user_id INT8 NOT NULL,
tenant_id INT8 NOT NULL,
media_id INT8 NOT NULL,
price INT8 NOT NULL,
created_at timestamp NOT NULL
);
CREATE INDEX idx_user_medias_user_id ON user_medias (user_id);
CREATE INDEX idx_user_medias_tenant_id ON user_medias (tenant_id);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP TABLE users;
DROP TABLE tenants;
DROP TABLE users_tenants;
DROP TABLE tenant_user_balances;
DROP TABLE user_balance_histories;
DROP TABLE medias;
DROP TABLE media_resources;
DROP TABLE user_medias;
-- +goose StatementEnd