Browse Source

New tables for projects.

Iñigo Valentin 9 years ago
parent
commit
4c5c55faab
1 changed files with 112 additions and 77 deletions
  1. 112 77
      sql/setup.sql

+ 112 - 77
sql/setup.sql

@@ -6,39 +6,39 @@ SET NAMES utf8;
 CONNECT iv;
 
 CREATE TABLE lang (
-    code        VARCHAR(2)      PRIMARY KEY,
-    name        VARCHAR(16)     NOT NULL,
-    active      BOOLEAN         DEFAULT 0
+    code    VARCHAR(2)   PRIMARY KEY,
+    name    VARCHAR(16)  NOT NULL,
+    active  BOOLEAN      DEFAULT 0
 );
 
 CREATE TABLE text (
-    id      VARCHAR(32),
-    lang    VARCHAR(2)      REFERENCES lang.code,
-    section VARCHAR(32),
-    text    VARCHAR(5000)   NOT NULL,
+    id       VARCHAR(32),
+    lang     VARCHAR(2)     REFERENCES lang.code,
+    section  VARCHAR(32),
+    text     VARCHAR(5000)  NOT NULL,
     PRIMARY KEY(id, lang)
 );
 CREATE INDEX i_text ON text(id, lang);
 
 CREATE TABLE user (
-    id          INT             AUTO_INCREMENT  PRIMARY KEY,
-    username    VARCHAR(64)     NOT NULL,
-    email       VARCHAR(128)    NOT NULL,
-    password    CHAR(128)       NOT NULL,
-    salt        CHAR(128)       NOT NULL,
-    fname       VARCHAR(64),
-    lname       VARCHAR(64),
-    picture     VARCHAR(100),
-    phone       VARCHAR(16),
-    cp          VARCHAR(6),
-    admin       BOOLEAN         NOT NULL        DEFAULT 0,
-    active      BOOLEAN         NOT NULL        DEFAULT 0
+    id        INT            AUTO_INCREMENT  PRIMARY KEY,
+    username  VARCHAR(64)    NOT NULL,
+    email     VARCHAR(128)   NOT NULL,
+    password  CHAR(128)      NOT NULL,
+    salt      CHAR(128)      NOT NULL,
+    fname     VARCHAR(64),
+    lname     VARCHAR(64),
+    picture   VARCHAR(100),
+    phone     VARCHAR(16),
+    cp        VARCHAR(6),
+    admin     BOOLEAN        NOT NULL        DEFAULT 0,
+    active    BOOLEAN        NOT NULL        DEFAULT 0
 );
 
 CREATE TABLE login_attempts (
-    user     INT          NOT NULL    REFERENCES user.id,
+    user     INT          NOT NULL  REFERENCES user.id,
     dtime    VARCHAR(30)  NOT NULL,
-    success  BOOLEAN      NOT NULL    DEFAULT 0
+    success  BOOLEAN      NOT NULL  DEFAULT 0
 );
 
 CREATE TABLE permissions(
@@ -48,104 +48,139 @@ CREATE TABLE permissions(
 );
 
 CREATE TABLE post (
-    id          INT             AUTO_INCREMENT  PRIMARY KEY,
-    permalink   VARCHAR(300)    NOT NULL,
-    title       VARCHAR(32)     NOT NULL        REFERENCES text.id,
-    text        VARCHAR(32)     NOT NULL        REFERENCES text.id,
-    user        INT             NOT NULL        REFERENCES user.id,
-    dtime       TIMESTAMP       NOT NULL        DEFAULT now(),
-    visible     BOOLEAN         NOT NULL        DEFAULT 1,
-    comments    BOOLEAN         NOT NULL        DEFAULT 1
+    id         INT           AUTO_INCREMENT  PRIMARY KEY,
+    permalink  VARCHAR(300)  NOT NULL,
+    title      VARCHAR(32)   NOT NULL        REFERENCES text.id,
+    text       VARCHAR(32)   NOT NULL        REFERENCES text.id,
+    user       INT           NOT NULL        REFERENCES user.id,
+    dtime      TIMESTAMP     NOT NULL        DEFAULT now(),
+    visible    BOOLEAN       NOT NULL        DEFAULT 1,
+    comments   BOOLEAN       NOT NULL        DEFAULT 1
 );
 
 CREATE TABLE post_tag (
-    post    INT            NOT NULL     REFERENCES post.id,
-    tag     VARCHAR(32)    NOT NULL     REFERENCES text.id,
+    post    INT          NOT NULL  REFERENCES post.id,
+    tag     VARCHAR(32)  NOT NULL  REFERENCES text.id,
     PRIMARY KEY (post, tag)
 );
 
 CREATE TABLE post_image (
-    id      INT             NOT NULL,
-    post    INT             NOT NULL    REFERENCES post.id,
-    image   VARCHAR(200)    NOT NULL,
+    id      INT           NOT NULL,
+    post    INT           NOT NULL  REFERENCES post.id,
+    image   VARCHAR(200)  NOT NULL,
     PRIMARY KEY(id, post)
 );
 
 CREATE TABLE post_comment (
-    id        INT             AUTO_INCREMENT              PRIMARY KEY,
-    post      INT             NOT NULL                    REFERENCES post(id),
-    text      VARCHAR(5000)   NOT NULL,
-    dtime     TIMESTAMP       NOT NULL                    DEFAULT now(),
-    user      INT             REFERENCES user.id,
+    id        INT            AUTO_INCREMENT            PRIMARY KEY,
+    post      INT            NOT NULL                  REFERENCES post(id),
+    text      VARCHAR(5000)  NOT NULL,
+    dtime     TIMESTAMP      NOT NULL                  DEFAULT now(),
+    user      INT            REFERENCES user.id,
     username  VARCHAR(200),
     lang      VARCHAR(10),
-    approved  BOOLEAN         NOT NULL                    DEFAULT 1,
-    visit     INT             REFERENCES stat_visit.id
+    approved  BOOLEAN        NOT NULL                  DEFAULT 1,
+    visit     INT            REFERENCES stat_visit.id
+);
+
+CREATE TYPE project_type (
+    id       VARCHAR(1)   NOT NULL  PRIMARY KEY,
+    title    VARCHAR(32)  NOT NULL  REFERENCES text.id,
+    summary  VARCHAR(32)  NOT NULL  REFERENCES text.id
 );
 
 CREATE TABLE project (
-    id          INT             AUTO_INCREMENT  PRIMARY KEY,
-    permalink   VARCHAR(300)    NOT NULL,
-    title       VARCHAR(32)     NOT NULL        REFERENCES text.id,
-    text        VARCHAR(32)     NOT NULL        REFERENCES text.id,
-    user        INT             NOT NULL        REFERENCES user.id,
-    visible     BOOLEAN         NOT NULL        DEFAULT 1,
-    comments    BOOLEAN         NOT NULL        DEFAULT 1
+    id         INT           AUTO_INCREMENT  PRIMARY KEY,
+    permalink  VARCHAR(300)  NOT NULL,
+    type       VARCHAR(1)    NOT NULL        REFERENCES project_type.id,
+    title      VARCHAR(32)   NOT NULL        REFERENCES text.id,
+    logo       VARCHAR(32),
+    header     VARCHAR(32)   NOT NULL        REFERENCES text.id,
+    text       VARCHAR(32)   NOT NULL        REFERENCES text.id,
+    user       INT           NOT NULL        REFERENCES user.id,
+    visible    BOOLEAN       NOT NULL        DEFAULT 1,
+    comments   BOOLEAN       NOT NULL        DEFAULT 1
+);
+
+CREATE TABLE project_version_type(
+    id       VARCHAR(1)   NOT NULL  PRIMARY KEY,
+    title    VARCHAR(32)  NOT NULL  REFERENCES text.id,
+    summary  VARCHAR(32)  NOT NULL  REFERENCES text.id
+    color    VARCHAR(7)
+);
+
+CREATE TABLE project_version (
+    project       INT          NOT NULL,
+    version_code  INT          NOT NULL,
+    version_name  VARCAHR(16)  NOT NULL,
+    type          VARCHAR(1)   NOT NULL            REFERENCES project_version_type.id,
+    summary       VARCAHR(32)  NOT NULL            REFERENCES text.id,
+    changelog     VARCHAR(32)  REFERENCES text.id,
+    dtime         DATETIME     NOT NULL            DEFAULT NOW,
+    visible       BOOLEAN      NOT NULL            DEFAULT 1,
+    PRIMARY KEY (project, version_code)
+);
+
+CREATE TABLE project_url_type (
+    id       VARCHAR(1)   NOT NULL  PRIMARY KEY,
+    title    VARCHAR(32)  NOT NULL  REFERENCES text.id,
+    summary  VARCHAR(32)  NOT NULL  REFERENCES text.id
 );
 
 CREATE TABLE project_url (
-    project     INT              NOT NULL  REFERENCES project.id,
-    type        VARCHAR(32)      NOT NULL,
-    url         VARCHAR(1024)    NOT NULL,
+    project  INT            NOT NULL  REFERENCES project.id,
+    type     VARCHAR(1)     NOT NULL  REFERENCES project_url_type,
+    url      VARCHAR(1024)  NOT NULL,
     PRIMARY KEY (project, type)
 );
 
 CREATE TABLE project_image (
-    id          INT             NOT NULL,
-    project     INT             NOT NULL    REFERENCES project.id,
-    image       VARCHAR(200)    NOT NULL,
+    id       INT           NOT NULL,
+    project  INT           NOT NULL  REFERENCES project.id,
+    image    VARCHAR(200)  NOT NULL,
     PRIMARY KEY(id, project)
 );
 
 CREATE TABLE project_tag (
-    project     INT            NOT NULL     REFERENCES project.id,
-    tag         VARCHAR(32)    NOT NULL     REFERENCES text.id,
+    project  INT          NOT NULL  REFERENCES project.id,
+    tag      VARCHAR(32)  NOT NULL  REFERENCES text.id,
     PRIMARY KEY (project, tag)
 );
 
 CREATE TABLE project_comment (
-    id        INT             AUTO_INCREMENT              PRIMARY KEY,
-    project   INT             NOT NULL                    REFERENCES project(id),
-    text      VARCHAR(5000)   NOT NULL,
-    dtime     TIMESTAMP       NOT NULL                    DEFAULT now(),
-    user      INT             REFERENCES user.id,
+    id        INT            AUTO_INCREMENT            PRIMARY KEY,
+    project   INT            NOT NULL                  REFERENCES project(id),
+    version   INT            NOT NULL                  REFERENCES project_version(version_code)
+    text      VARCHAR(5000)  NOT NULL,
+    dtime     TIMESTAMP      NOT NULL                  DEFAULT now(),
+    user      INT            REFERENCES user.id,
     username  VARCHAR(200),
     lang      VARCHAR(10),
-    approved  BOOLEAN         NOT NULL                    DEFAULT 1,
-    visit     INT             REFERENCES stat_visit.id
+    approved  BOOLEAN        NOT NULL                  DEFAULT 1,
+    visit     INT            REFERENCES stat_visit.id
 );
 
 CREATE TABLE settings (
-    name        VARCHAR(64)     PRIMARY KEY,
-    value       VARCHAR(64)     NOT NULL,
-    user        INT             REFERENCES user.id,
-    changed     TIMESTAMP       NOT NULL                DEFAULT now()
+    name     VARCHAR(64)  PRIMARY KEY,
+    value    VARCHAR(64)  NOT NULL,
+    user     INT          REFERENCES user.id,
+    changed  TIMESTAMP    NOT NULL            DEFAULT now()
 );
 
 CREATE TABLE stat_visit (
-    id          INT              AUTO_INCREMENT    PRIMARY KEY,
-    ip          VARCHAR(50),
-    uagent      VARCHAR(400),
-    os          VARCHAR(150),
-    browser     VARCHAR(150)
+    id       INT           AUTO_INCREMENT  PRIMARY KEY,
+    ip       VARCHAR(50),
+    uagent   VARCHAR(400),
+    os       VARCHAR(150),
+    browser  VARCHAR(150)
 );
 
 CREATE TABLE stat_view (
-    id          INT             NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    visit       INT             NOT NULL    REFERENCES stat_visit.id,
-    section     VARCHAR(80)     NOT NULL,
-    entry       VARCHAR(100)    NOT NULL,
-    dtime       TIMESTAMP       NOT NULL    DEFAULT now()
+    id       INT           NOT NULL  AUTO_INCREMENT            PRIMARY KEY,
+    visit    INT           NOT NULL  REFERENCES stat_visit.id,
+    section  VARCHAR(80)   NOT NULL,
+    entry    VARCHAR(100)  NOT NULL,
+    dtime    TIMESTAMP     NOT NULL  DEFAULT now()
 );
 CREATE INDEX i_visit ON stat_view(visit, dtime);