flame/db/migrations/00_initial.js
2021-10-05 12:29:17 +02:00

190 lines
3.2 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { INTEGER, DATE, STRING, TINYINT, FLOAT, TEXT } = DataTypes;
const up = async (query) => {
// CONFIG TABLE
await query.createTable('config', {
id: {
type: INTEGER,
autoIncrement: true,
primaryKey: true,
},
key: {
type: STRING,
allowNull: false,
unique: true,
},
value: {
type: STRING,
allowNull: false,
},
valueType: {
type: STRING,
allowNull: false,
},
isLocked: {
type: TINYINT,
defaultValue: 0,
},
createdAt: {
type: DATE,
allowNull: false,
},
updatedAt: {
type: DATE,
allowNull: false,
},
});
// WEATHER TABLE
await query.createTable('weather', {
id: {
type: INTEGER,
autoIncrement: true,
primaryKey: true,
},
externalLastUpdate: {
type: STRING,
},
tempC: {
type: FLOAT,
},
tempF: {
type: FLOAT,
},
isDay: {
type: INTEGER,
},
cloud: {
type: INTEGER,
},
conditionText: {
type: TEXT,
},
conditionCode: {
type: INTEGER,
},
createdAt: {
type: DATE,
allowNull: false,
},
updatedAt: {
type: DATE,
allowNull: false,
},
});
// CATEGORIES TABLE
await query.createTable('categories', {
id: {
type: INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: STRING,
allowNull: false,
},
isPinned: {
type: TINYINT,
defaultValue: 0,
},
createdAt: {
type: DATE,
allowNull: false,
},
updatedAt: {
type: DATE,
allowNull: false,
},
orderId: {
type: INTEGER,
defaultValue: null,
},
});
// BOOKMARKS TABLE
await query.createTable('bookmarks', {
id: {
type: INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: STRING,
allowNull: false,
},
url: {
type: STRING,
allowNull: false,
},
categoryId: {
type: INTEGER,
allowNull: false,
},
icon: {
type: STRING,
defaultValue: '',
},
createdAt: {
type: DATE,
allowNull: false,
},
updatedAt: {
type: DATE,
allowNull: false,
},
});
// APPS TABLE
await query.createTable('apps', {
id: {
type: INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: STRING,
allowNull: false,
},
url: {
type: STRING,
allowNull: false,
},
icon: {
type: STRING,
allowNull: false,
defaultValue: 'cancel',
},
isPinned: {
type: TINYINT,
defaultValue: 0,
},
createdAt: {
type: DATE,
allowNull: false,
},
updatedAt: {
type: DATE,
allowNull: false,
},
orderId: {
type: INTEGER,
defaultValue: null,
},
});
};
const down = async (query) => {
await query.dropTable('config');
await query.dropTable('weather');
await query.dropTable('categories');
await query.dropTable('bookmarks');
await query.dropTable('apps');
};
module.exports = {
up,
down,
};