CREATE TABLE IF NOT EXISTS "user_balance_log"
(
    "id"         BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "user_id"    bigint     NOT NULL,
    "amount"     bigint     NOT NULL,
    "type"       SMALLINT NOT NULL,
    "order_id"   bigint      DEFAULT NULL,
    "balance"    bigint     NOT NULL,
    "created_at" TIMESTAMP(3) DEFAULT NULL,
    PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "user_balance_log_idx_user_id" ON "user_balance_log" ("user_id");
CREATE TABLE IF NOT EXISTS "user_commission_log"
(
    "id"         BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "user_id"    bigint NOT NULL,
    "order_no"   varchar(191)   DEFAULT NULL,
    "amount"     bigint NOT NULL,
    "created_at" TIMESTAMP(3)                                                   DEFAULT NULL,
    PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "user_commission_log_idx_user_id" ON "user_commission_log" ("user_id");
CREATE TABLE IF NOT EXISTS "user_gift_amount_log"
(
    "id"                BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "user_id"           bigint     NOT NULL,
    "user_subscribe_id" bigint                                                        DEFAULT NULL,
    "order_no"          varchar(191)   DEFAULT NULL,
    "type"              SMALLINT NOT NULL,
    "amount"            bigint     NOT NULL,
    "balance"           bigint     NOT NULL,
    "remark"            varchar(255)   DEFAULT '',
    "created_at"        TIMESTAMP(3)                                                   DEFAULT NULL,
    PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "user_gift_amount_log_idx_user_id" ON "user_gift_amount_log" ("user_id");
CREATE TABLE IF NOT EXISTS "user_login_log"
(
    "id"         BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "user_id"    bigint                                                        NOT NULL,
    "login_ip"   varchar(255)   NOT NULL,
    "user_agent" text           NOT NULL,
    "success"    BOOLEAN                                                    NOT NULL DEFAULT false,
    "created_at" TIMESTAMP(3)                                                            DEFAULT NULL,
    PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "user_login_log_idx_user_id" ON "user_login_log" ("user_id");
CREATE TABLE IF NOT EXISTS "user_reset_subscribe_log"
(
    "id"                BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,
    "user_id"           BIGINT     NOT NULL,
    "type"              SMALLINT NOT NULL,
    "order_no"          VARCHAR(255)        DEFAULT NULL,
    "user_subscribe_id" BIGINT     NOT NULL,
    "created_at"        TIMESTAMP   NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS "user_reset_subscribe_log_idx_user_id" ON "user_reset_subscribe_log" ("user_id");
CREATE INDEX IF NOT EXISTS "user_reset_subscribe_log_idx_user_subscribe_id" ON "user_reset_subscribe_log" ("user_subscribe_id");
CREATE TABLE IF NOT EXISTS "user_subscribe_log"
(
    "id"                BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "user_id"           bigint                                                        NOT NULL,
    "user_subscribe_id" bigint                                                        NOT NULL,
    "token"             varchar(255)   NOT NULL,
    "ip"                varchar(255)   NOT NULL,
    "user_agent"        text           NOT NULL,
    "created_at"        TIMESTAMP(3) DEFAULT NULL,
    PRIMARY KEY ("id")
);
CREATE INDEX IF NOT EXISTS "user_subscribe_log_idx_user_id" ON "user_subscribe_log" ("user_id");
CREATE INDEX IF NOT EXISTS "user_subscribe_log_idx_user_subscribe_id" ON "user_subscribe_log" ("user_subscribe_id");
CREATE TABLE IF NOT EXISTS "message_log"
(
    "id"         BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "type"       varchar(50)    NOT NULL DEFAULT 'email',
    "platform"   varchar(50)    NOT NULL DEFAULT 'smtp',
    "to"         text           NOT NULL,
    "subject"    varchar(255)   NOT NULL DEFAULT '',
    "content"    text,
    "status"     SMALLINT                                                    NOT NULL DEFAULT '0',
    "created_at" TIMESTAMP(3)                                                            DEFAULT NULL,
    "updated_at" TIMESTAMP(3)                                                            DEFAULT NULL,
    PRIMARY KEY ("id")
);
DROP TABLE IF EXISTS "system_logs";
