create table if not exists card_tokens_tbl
(
    card_token_id bigint auto_increment
        primary key,
    created_at    datetime(6)   not null,
    updated_at    datetime(6)   not null,
    card_id       bigint        null,
    card_token    varchar(2000) null
);

create table if not exists conditions_tbl
(
    condition_id bigint auto_increment
        primary key,
    created_at   datetime(6)  not null,
    updated_at   datetime(6)  not null,
    item         varchar(255) null,
    item_image   varchar(255) null,
    limit_amount int          not null,
    limit_date   date         null,
    market_name  varchar(255) null
);

create table if not exists members_tbl
(
    created_at   datetime(6)  null,
    member_id    bigint auto_increment
        primary key,
    updated_at   datetime(6)  null,
    email        varchar(100) null,
    password     varchar(255) null,
    phone_number varchar(13)  null,
    public_key   varchar(392) null,
    username     varchar(10)  null
);

create table if not exists cards_tbl
(
    card_id      bigint auto_increment
        primary key,
    created_at   datetime(6)                            not null,
    updated_at   datetime(6)                            not null,
    card_company enum ('SIGNATURE', 'NONE', '신한', '비씨') null,
    card_img     varchar(255)                           null,
    card_name    varchar(255)                           null,
    member_id    bigint                                 null,
    constraint FKee46u9tir9a8ry8d039lr53mr
        foreign key (member_id) references members_tbl (member_id)
);

create table if not exists friends_tbl
(
    created_at     datetime(6)  not null,
    friend_id      bigint auto_increment
        primary key,
    from_member_id bigint       null,
    to_member_id   bigint       null,
    updated_at     datetime(6)  not null,
    friend_name    varchar(255) null,
    constraint FKbt0e9q980fxnf9p0hfbvxuo3d
        foreign key (to_member_id) references members_tbl (member_id),
    constraint FKd7tod21vk2n5oe1e2slc7g5mx
        foreign key (from_member_id) references members_tbl (member_id)
);

create table if not exists member_devices_tbl
(
    created_at datetime(6)  null,
    id         bigint auto_increment
        primary key,
    member_id  bigint       null,
    updated_at datetime(6)  null,
    device_id  varchar(255) null,
    constraint FK3ysq04r3ehswlaj606x4doepb
        foreign key (member_id) references members_tbl (member_id)
);

create table if not exists notifications_tbl
(
    created_at        datetime(6)                                                                                                                                                      not null,
    from_member_id    bigint                                                                                                                                                           null,
    notification_id   bigint auto_increment
        primary key,
    signature_id      bigint                                                                                                                                                           null,
    to_member_id      bigint                                                                                                                                                           null,
    updated_at        datetime(6)                                                                                                                                                      not null,
    message           varchar(255)                                                                                                                                                     null,
    notification_type enum ('INPROGRESS_SUBMIT', 'REQUEST_EXPIRED', 'INPROGRESS_CONSIDER', 'INPROGRESS_PICKCARD', 'PAYMENT', 'CARD_EXPIRED', 'APPROVED', 'REJECTED', 'OFFON', 'ONOFF') null,
    constraint FKdk2p44obk4fy4j98r3qly09y6
        foreign key (from_member_id) references members_tbl (member_id),
    constraint FKjayxl8fji0rq00xa29yqwluls
        foreign key (to_member_id) references members_tbl (member_id)
);

create table if not exists payments_tbl
(
    payment_id   bigint auto_increment
        primary key,
    created_at   datetime(6)  not null,
    updated_at   datetime(6)  not null,
    market_name  varchar(255) null,
    total_amount int          null,
    card_id      bigint       null,
    constraint FK75mwuqlyc1oj8o91rnqtshhj8
        foreign key (card_id) references cards_tbl (card_id)
);

create table if not exists private_keys_tbl
(
    member_id      bigint        null,
    private_key_id bigint auto_increment
        primary key,
    private_key    varchar(1800) null
);

create table if not exists signature_detail_cards_tbl
(
    signature_detail_card_id  bigint auto_increment
        primary key,
    created_at                datetime(6)        not null,
    updated_at                datetime(6)        not null,
    card_id                   bigint             null,
    is_deleted                bit default b'0'   null,
    is_validate               enum ('ON', 'OFF') null,
    transaction_card_nickname varchar(255)       null
);

create table if not exists signature_details_tbl
(
    signature_detail_id      bigint auto_increment
        primary key,
    created_at               datetime(6)                                 not null,
    updated_at               datetime(6)                                 not null,
    permission_status        enum ('INPROGRESS', 'APPROVED', 'REJECTED') null,
    signature_type           enum ('INSTANT', 'DURATION')                null,
    condition_id             bigint                                      null,
    from_member_id           bigint                                      null,
    signature_detail_card_id bigint                                      null,
    to_member_id             bigint                                      null,
    constraint UK_aa20kbsydvk40ouyyv81nrlji
        unique (condition_id),
    constraint UK_hkt524vy22of9f6gdvyat0iuf
        unique (signature_detail_card_id),
    constraint FK2lx2mgmslw0yt4xxqodk8sghc
        foreign key (to_member_id) references members_tbl (member_id),
    constraint FK3een649tfgxufc2bwqfgyoca2
        foreign key (condition_id) references conditions_tbl (condition_id),
    constraint FK48h8ifpxrp5n4xb7kxx678yyl
        foreign key (from_member_id) references members_tbl (member_id),
    constraint FKcijgf9qx4vb7txjumf6emmq30
        foreign key (signature_detail_card_id) references signature_detail_cards_tbl (signature_detail_card_id)
);