feat: update framework
This commit is contained in:
8
backend/database/database.go
Normal file
8
backend/database/database.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"embed"
|
||||
)
|
||||
|
||||
//go:embed migrations/*
|
||||
var MigrationFS embed.FS
|
||||
122
backend/database/migrations/20241128075611_init.sql
Normal file
122
backend/database/migrations/20241128075611_init.sql
Normal 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
|
||||
Reference in New Issue
Block a user