/db_seed

Primary LanguageTypeScript

Install nodejs 16x, create database, change config in seed.ts and run following commands.

CREATE TABLE customers
(
    id         bigserial primary key,
    first_name varchar(255)                not null,
    last_name  varchar(255)                not null,
    created_at timestamp without time zone not null default now(),
    updated_at timestamp without time zone not null default now()
);

create table products
(
    id          bigserial primary key,
    name        varchar(255)                not null,
    description text,
    created_at  timestamp without time zone not null default now(),
    updated_at  timestamp without time zone not null default now()
);

create table variants
(
    id          bigserial primary key,
    product_id  bigint references products  not null,
    name        varchar(255)                not null,
    price       decimal                     not null,
    description text,
    created_at  timestamp without time zone not null default now(),
    updated_at  timestamp without time zone not null default now()
);

create table bookings
(
    id         bigserial primary key,
    product_id bigint references products  not null,
    variant_id bigint references variants  not null,
    customer_id bigint references customers  not null,
--     State can be one of created, payment_due, confirmed, cancelled
    state      varchar(20)                 not null default 'created',
    amount     decimal                     not null,
    created_at timestamp without time zone not null default now(),
    updated_at timestamp without time zone not null default now()
);

create table payments
(
    id         bigserial primary key,
    booking_id bigint references bookings  not null,
    amount     decimal                     not null,
    --     State can be one of created, successful, failed, refunded
    state      varchar(20)                 not null default 'created',
    created_at timestamp without time zone not null default now(),
    updated_at timestamp without time zone not null default now()
);

alter table payments
    add foreign key (booking_id) references bookings (id);
npm i
npx ts-node seed.ts