mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import { Transaction } from 'sequelize'
 | |
| import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table } from 'sequelize-typescript'
 | |
| import { MLocalVideoViewerWatchSection } from '@server/types/models'
 | |
| import { AttributesOnly } from '@shared/typescript-utils'
 | |
| import { LocalVideoViewerModel } from './local-video-viewer'
 | |
| 
 | |
| @Table({
 | |
|   tableName: 'localVideoViewerWatchSection',
 | |
|   updatedAt: false,
 | |
|   indexes: [
 | |
|     {
 | |
|       fields: [ 'localVideoViewerId' ]
 | |
|     }
 | |
|   ]
 | |
| })
 | |
| export class LocalVideoViewerWatchSectionModel extends Model<Partial<AttributesOnly<LocalVideoViewerWatchSectionModel>>> {
 | |
|   @CreatedAt
 | |
|   createdAt: Date
 | |
| 
 | |
|   @AllowNull(false)
 | |
|   @Column
 | |
|   watchStart: number
 | |
| 
 | |
|   @AllowNull(false)
 | |
|   @Column
 | |
|   watchEnd: number
 | |
| 
 | |
|   @ForeignKey(() => LocalVideoViewerModel)
 | |
|   @Column
 | |
|   localVideoViewerId: number
 | |
| 
 | |
|   @BelongsTo(() => LocalVideoViewerModel, {
 | |
|     foreignKey: {
 | |
|       allowNull: false
 | |
|     },
 | |
|     onDelete: 'CASCADE'
 | |
|   })
 | |
|   LocalVideoViewer: LocalVideoViewerModel
 | |
| 
 | |
|   static async bulkCreateSections (options: {
 | |
|     localVideoViewerId: number
 | |
|     watchSections: {
 | |
|       start: number
 | |
|       end: number
 | |
|     }[]
 | |
|     transaction?: Transaction
 | |
|   }) {
 | |
|     const { localVideoViewerId, watchSections, transaction } = options
 | |
|     const models: MLocalVideoViewerWatchSection[] = []
 | |
| 
 | |
|     for (const section of watchSections) {
 | |
|       const model = await this.create({
 | |
|         watchStart: section.start,
 | |
|         watchEnd: section.end,
 | |
|         localVideoViewerId
 | |
|       }, { transaction })
 | |
| 
 | |
|       models.push(model)
 | |
|     }
 | |
| 
 | |
|     return models
 | |
|   }
 | |
| }
 |