setup/postgres/psql_create_tables.sql

Sun, 21 Jun 2020 11:10:30 +0200

author
Mike Becker <universe@uap-core.de>
date
Sun, 21 Jun 2020 11:10:30 +0200
changeset 87
501addad452b
parent 85
3d16ad54b3dc
child 88
1438e5a22c55
permissions
-rw-r--r--

smaller issue summary progress bars

-- This script creates the module management tables
--

create table lpit_user (
    userid          serial          primary key,
    username        varchar(50)     not null unique,
    mail            varchar(50),
    lastname        varchar(50),
    givenname       varchar(50)
);

create table lpit_project (
    projectid       serial          primary key,
    name            varchar(20)     not null unique,
    description     varchar(200),
    repoUrl         varchar(50),
    owner           integer         references lpit_user(userid)
);

create type version_status as enum (
    'Future',
    'Unreleased',
    'Released',
    'LTS',
    'Deprecated'
);

create table lpit_version (
    versionid       serial          primary key,
    project         integer         not null references lpit_project(projectid),
    name            varchar(20)     not null,
    ordinal         integer         not null default 0,
    status          version_status  not null default 'Future'
);

create type issue_status as enum (
    'InSpecification',
    'ToDo',
    'Scheduled',
    'InProgress',
    'InReview',
    'Done',
    'Rejected',
    'Withdrawn',
    'Duplicate'
);

create type issue_category as enum (
    'Feature',
    'Improvement',
    'Bug',
    'Task',
    'Test'
);

create table lpit_issue_phases (
    status          issue_status    primary key,
    phase           integer         not null
);

create table lpit_issue (
    issueid         serial          primary key,
    project         integer         not null references lpit_project(projectid),
    status          issue_status    not null default 'InSpecification',
    category        issue_category  not null default 'Feature',
    subject         varchar(200)    not null,
    description     text,
    assignee        integer         references lpit_user(userid),
    created         timestamp       with time zone not null default now(),
    updated         timestamp       with time zone not null default now(),
    eta             date
);

create table lpit_issue_affected_version (
    issueid         integer         references lpit_issue(issueid),
    versionid       integer         references lpit_version(versionid),
    primary key (issueid, versionid)
);

create table lpit_issue_scheduled_version (
    issueid         integer         references lpit_issue(issueid),
    versionid       integer         references lpit_version(versionid),
    primary key (issueid, versionid)
);

create table lpit_issue_resolved_version (
    issueid         integer         references lpit_issue(issueid),
    versionid       integer         references lpit_version(versionid),
    primary key (issueid, versionid)
);

mercurial