@smallprod/models
Version:
34 lines (33 loc) • 2.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
create: async (model, type) => {
switch (type) {
case 'postgres':
await model.query(`CREATE TABLE categories (id SERIAL PRIMARY KEY NOT NULL, label VARCHAR(50));`);
await model.query(`CREATE TABLE articles (id SERIAL PRIMARY KEY NOT NULL, title VARCHAR(50), publishedat DATE, nbpages INT, category_id BIGINT, CONSTRAINT fk_category FOREIGN KEY (category_id) REFERENCES categories(id));`);
await model.query(`CREATE TABLE users (id SERIAL PRIMARY KEY NOT NULL, firstname VARCHAR(50), lastname VARCHAR(50), email VARCHAR(50) UNIQUE, birthdate DATE)`);
await model.query(`CREATE TABLE article_authors (article_id BIGINT, user_id BIGINT, CONSTRAINT fk_article FOREIGN KEY (article_id) REFERENCES articles(id), CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id))`);
break;
case 'mysql':
await model.query(`CREATE TABLE categories (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, label VARCHAR(50));`);
await model.query(`CREATE TABLE articles (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, title VARCHAR(50), publishedAt DATE, nbpages INT, category_id BIGINT, CONSTRAINT fk_category FOREIGN KEY (category_id) REFERENCES categories(id));`);
await model.query(`CREATE TABLE users (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, firstname VARCHAR(50), lastname VARCHAR(50), email VARCHAR(50) UNIQUE, birthdate DATE)`);
await model.query(`CREATE TABLE article_authors (article_id BIGINT, user_id BIGINT, CONSTRAINT fk_article FOREIGN KEY (article_id) REFERENCES articles(id), CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id))`);
break;
case 'maria':
await model.query(`CREATE TABLE categories (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, label VARCHAR(50));`);
await model.query(`CREATE TABLE articles (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, title VARCHAR(50), publishedAt DATE, nbpages INT, category_id BIGINT, CONSTRAINT fk_category FOREIGN KEY (category_id) REFERENCES categories(id));`);
await model.query(`CREATE TABLE users (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT, firstname VARCHAR(50), lastname VARCHAR(50), email VARCHAR(50) UNIQUE, birthdate DATE)`);
await model.query(`CREATE TABLE article_authors (article_id BIGINT, user_id BIGINT, CONSTRAINT fk_article FOREIGN KEY (article_id) REFERENCES articles(id), CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id))`);
break;
default:
}
},
delete: async (model) => {
await model.query('DROP TABLE article_authors');
await model.query('DROP TABLE articles');
await model.query('DROP TABLE categories');
await model.query('DROP TABLE users');
},
};