From 3fd3ab2d34d512b160a5e6084d7609be7b4f4452 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 12 Dec 2017 17:53:50 +0100 Subject: Move models to typescript-sequelize --- server/models/application/application-interface.ts | 31 --------- server/models/application/application.ts | 80 ++++++++-------------- server/models/application/index.ts | 1 - 3 files changed, 27 insertions(+), 85 deletions(-) delete mode 100644 server/models/application/application-interface.ts delete mode 100644 server/models/application/index.ts (limited to 'server/models/application') diff --git a/server/models/application/application-interface.ts b/server/models/application/application-interface.ts deleted file mode 100644 index 2c391dba3..000000000 --- a/server/models/application/application-interface.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as Sequelize from 'sequelize' -import * as Bluebird from 'bluebird' - -export namespace ApplicationMethods { - export type LoadMigrationVersion = () => Bluebird - - export type UpdateMigrationVersion = ( - newVersion: number, - transaction: Sequelize.Transaction - ) => Bluebird<[ number, ApplicationInstance[] ]> - - export type CountTotal = () => Bluebird -} - -export interface ApplicationClass { - loadMigrationVersion: ApplicationMethods.LoadMigrationVersion - updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion - countTotal: ApplicationMethods.CountTotal -} - -export interface ApplicationAttributes { - migrationVersion: number -} - -export interface ApplicationInstance extends ApplicationClass, ApplicationAttributes, Sequelize.Instance { - id: number - createdAt: Date - updatedAt: Date -} - -export interface ApplicationModel extends ApplicationClass, Sequelize.Model {} diff --git a/server/models/application/application.ts b/server/models/application/application.ts index 8ba40a895..f3c0f1052 100644 --- a/server/models/application/application.ts +++ b/server/models/application/application.ts @@ -1,61 +1,35 @@ -import * as Sequelize from 'sequelize' - -import { addMethodsToModel } from '../utils' -import { - ApplicationAttributes, - ApplicationInstance, - - ApplicationMethods -} from './application-interface' - -let Application: Sequelize.Model -let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion -let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion -let countTotal: ApplicationMethods.CountTotal +import { Transaction } from 'sequelize' +import { AllowNull, Column, Default, IsInt, Model, Table } from 'sequelize-typescript' + +@Table({ + tableName: 'application' +}) +export class ApplicationModel extends Model { + + @AllowNull(false) + @Default(0) + @IsInt + @Column + migrationVersion: number + + static countTotal () { + return ApplicationModel.count() + } -export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - Application = sequelize.define('Application', - { - migrationVersion: { - type: DataTypes.INTEGER, - defaultValue: 0, - allowNull: false, - validate: { - isInt: true - } - } + static loadMigrationVersion () { + const query = { + attributes: [ 'migrationVersion' ] } - ) - - const classMethods = [ - countTotal, - loadMigrationVersion, - updateMigrationVersion - ] - addMethodsToModel(Application, classMethods) - - return Application -} -// --------------------------------------------------------------------------- - -countTotal = function () { - return this.count() -} - -loadMigrationVersion = function () { - const query = { - attributes: [ 'migrationVersion' ] + return ApplicationModel.findOne(query).then(data => data ? data.migrationVersion : null) } - return Application.findOne(query).then(data => data ? data.migrationVersion : null) -} + static updateMigrationVersion (newVersion: number, transaction: Transaction) { + const options = { + where: {}, + transaction: transaction + } -updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction) { - const options: Sequelize.UpdateOptions = { - where: {}, - transaction: transaction + return ApplicationModel.update({ migrationVersion: newVersion }, options) } - - return Application.update({ migrationVersion: newVersion }, options) } diff --git a/server/models/application/index.ts b/server/models/application/index.ts deleted file mode 100644 index 706f85cb9..000000000 --- a/server/models/application/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './application-interface' -- cgit v1.2.3