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/video/video-share.ts | 118 ++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 62 deletions(-) (limited to 'server/models/video/video-share.ts') diff --git a/server/models/video/video-share.ts b/server/models/video/video-share.ts index 37e405fa9..01b6d3d34 100644 --- a/server/models/video/video-share.ts +++ b/server/models/video/video-share.ts @@ -1,84 +1,78 @@ import * as Sequelize from 'sequelize' +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { AccountModel } from '../account/account' +import { VideoModel } from './video' -import { addMethodsToModel } from '../utils' -import { VideoShareAttributes, VideoShareInstance, VideoShareMethods } from './video-share-interface' - -let VideoShare: Sequelize.Model -let loadAccountsByShare: VideoShareMethods.LoadAccountsByShare -let load: VideoShareMethods.Load - -export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - VideoShare = sequelize.define('VideoShare', - { }, +@Table({ + tableName: 'videoShare', + indexes: [ { - indexes: [ - { - fields: [ 'accountId' ] - }, - { - fields: [ 'videoId' ] - } - ] + fields: [ 'accountId' ] + }, + { + fields: [ 'videoId' ] } - ) - - const classMethods = [ - associate, - loadAccountsByShare, - load ] - addMethodsToModel(VideoShare, classMethods) +}) +export class VideoShareModel extends Model { + @CreatedAt + createdAt: Date - return VideoShare -} + @UpdatedAt + updatedAt: Date -// ------------------------------ METHODS ------------------------------ + @ForeignKey(() => AccountModel) + @Column + accountId: number -function associate (models) { - VideoShare.belongsTo(models.Account, { + @BelongsTo(() => AccountModel, { foreignKey: { - name: 'accountId', allowNull: false }, onDelete: 'cascade' }) + Account: AccountModel - VideoShare.belongsTo(models.Video, { + @ForeignKey(() => VideoModel) + @Column + videoId: number + + @BelongsTo(() => VideoModel, { foreignKey: { - name: 'videoId', - allowNull: true + allowNull: false }, onDelete: 'cascade' }) -} - -load = function (accountId: number, videoId: number, t: Sequelize.Transaction) { - return VideoShare.findOne({ - where: { - accountId, - videoId - }, - include: [ - VideoShare['sequelize'].models.Account - ], - transaction: t - }) -} + Video: VideoModel -loadAccountsByShare = function (videoId: number, t: Sequelize.Transaction) { - const query = { - where: { - videoId - }, - include: [ - { - model: VideoShare['sequelize'].models.Account, - required: true - } - ], - transaction: t + static load (accountId: number, videoId: number, t: Sequelize.Transaction) { + return VideoShareModel.findOne({ + where: { + accountId, + videoId + }, + include: [ + AccountModel + ], + transaction: t + }) } - return VideoShare.findAll(query) - .then(res => res.map(r => r.Account)) + static loadAccountsByShare (videoId: number, t: Sequelize.Transaction) { + const query = { + where: { + videoId + }, + include: [ + { + model: AccountModel, + required: true + } + ], + transaction: t + } + + return VideoShareModel.findAll(query) + .then(res => res.map(r => r.Account)) + } } -- cgit v1.2.3