mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-02-28 21:19:42 +00:00
Starting db migration file
This commit is contained in:
parent
b2e1e24ca5
commit
c738e35a8c
14 changed files with 477 additions and 39 deletions
|
|
@ -23,16 +23,21 @@ module.exports = (sequelize) => {
|
|||
},
|
||||
mediaItemId: DataTypes.UUIDV4,
|
||||
mediaItemType: DataTypes.STRING,
|
||||
index: DataTypes.INTEGER
|
||||
index: DataTypes.INTEGER,
|
||||
startOffset: DataTypes.INTEGER,
|
||||
duration: DataTypes.INTEGER,
|
||||
title: DataTypes.STRING,
|
||||
mimeType: DataTypes.STRING,
|
||||
codec: DataTypes.STRING
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'AudioTrack'
|
||||
})
|
||||
|
||||
const { Book, PodcastEpisode, FileMetadata } = sequelize.models
|
||||
const { Book, PodcastEpisode, MediaFile } = sequelize.models
|
||||
|
||||
FileMetadata.hasOne(AudioTrack)
|
||||
AudioTrack.belongsTo(FileMetadata)
|
||||
MediaFile.hasOne(AudioTrack)
|
||||
AudioTrack.belongsTo(MediaFile)
|
||||
|
||||
Book.hasMany(AudioTrack, {
|
||||
foreignKey: 'mediaItemId',
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ module.exports = (sequelize) => {
|
|||
},
|
||||
index: DataTypes.INTEGER,
|
||||
title: DataTypes.STRING,
|
||||
start: DataTypes.INTEGER,
|
||||
end: DataTypes.INTEGER
|
||||
start: DataTypes.FLOAT,
|
||||
end: DataTypes.FLOAT
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'BookChapter'
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ module.exports = (sequelize) => {
|
|||
mediaType: DataTypes.STRING,
|
||||
provider: DataTypes.STRING,
|
||||
lastScan: DataTypes.DATE,
|
||||
scanVersion: DataTypes.STRING
|
||||
lastScanVersion: DataTypes.STRING
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'Library'
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ module.exports = (sequelize) => {
|
|||
ctime: DataTypes.DATE(6),
|
||||
birthtime: DataTypes.DATE(6),
|
||||
lastScan: DataTypes.DATE,
|
||||
scanVersion: DataTypes.STRING
|
||||
lastScanVersion: DataTypes.STRING
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'LibraryItem'
|
||||
|
|
|
|||
29
server/models/MediaFile.js
Normal file
29
server/models/MediaFile.js
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
const { DataTypes, Model } = require('sequelize')
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
class MediaFile extends Model { }
|
||||
|
||||
MediaFile.init({
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
formatName: DataTypes.STRING,
|
||||
formatNameLong: DataTypes.STRING,
|
||||
duration: DataTypes.FLOAT,
|
||||
bitrate: DataTypes.INTEGER,
|
||||
size: DataTypes.BIGINT,
|
||||
tags: DataTypes.JSON
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'MediaFile'
|
||||
})
|
||||
|
||||
const { FileMetadata } = sequelize.models
|
||||
|
||||
FileMetadata.hasOne(MediaFile)
|
||||
MediaFile.belongsTo(FileMetadata)
|
||||
|
||||
return MediaFile
|
||||
}
|
||||
49
server/models/MediaStream.js
Normal file
49
server/models/MediaStream.js
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
const { DataTypes, Model } = require('sequelize')
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
class MediaStream extends Model { }
|
||||
|
||||
MediaStream.init({
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
index: DataTypes.INTEGER,
|
||||
codecType: DataTypes.STRING,
|
||||
codec: DataTypes.STRING,
|
||||
channels: DataTypes.INTEGER,
|
||||
channelLayout: DataTypes.STRING,
|
||||
bitrate: DataTypes.INTEGER,
|
||||
timeBase: DataTypes.STRING,
|
||||
duration: DataTypes.FLOAT,
|
||||
sampleRate: DataTypes.INTEGER,
|
||||
language: DataTypes.STRING,
|
||||
default: DataTypes.BOOLEAN,
|
||||
// Video stream specific
|
||||
profile: DataTypes.STRING,
|
||||
width: DataTypes.INTEGER,
|
||||
height: DataTypes.INTEGER,
|
||||
codedWidth: DataTypes.INTEGER,
|
||||
codedHeight: DataTypes.INTEGER,
|
||||
pixFmt: DataTypes.STRING,
|
||||
level: DataTypes.INTEGER,
|
||||
frameRate: DataTypes.FLOAT,
|
||||
colorSpace: DataTypes.STRING,
|
||||
colorRange: DataTypes.STRING,
|
||||
chromaLocation: DataTypes.STRING,
|
||||
displayAspectRatio: DataTypes.FLOAT,
|
||||
// Chapters JSON
|
||||
chapters: DataTypes.JSON
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'MediaStream'
|
||||
})
|
||||
|
||||
const { MediaFile } = sequelize.models
|
||||
|
||||
MediaFile.hasMany(MediaStream)
|
||||
MediaStream.belongsTo(MediaFile)
|
||||
|
||||
return MediaStream
|
||||
}
|
||||
33
server/models/Notification.js
Normal file
33
server/models/Notification.js
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
const { DataTypes, Model } = require('sequelize')
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
class Notification extends Model { }
|
||||
|
||||
Notification.init({
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
eventName: DataTypes.STRING,
|
||||
urls: DataTypes.TEXT, // JSON array of urls
|
||||
titleTemplate: DataTypes.STRING(1000),
|
||||
bodyTemplate: DataTypes.TEXT,
|
||||
type: DataTypes.STRING,
|
||||
lastFiredAt: DataTypes.DATE,
|
||||
lastAttemptFailed: DataTypes.BOOLEAN,
|
||||
numConsecutiveFailedAttempts: DataTypes.INTEGER,
|
||||
numTimesFired: DataTypes.INTEGER,
|
||||
enabled: DataTypes.BOOLEAN
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'Notification'
|
||||
})
|
||||
|
||||
const { Library } = sequelize.models
|
||||
|
||||
Library.hasMany(Notification)
|
||||
Notification.belongsTo(Library)
|
||||
|
||||
return Notification
|
||||
}
|
||||
|
|
@ -14,8 +14,14 @@ module.exports = (sequelize) => {
|
|||
pash: DataTypes.STRING,
|
||||
type: DataTypes.STRING,
|
||||
token: DataTypes.STRING,
|
||||
isActive: DataTypes.BOOLEAN,
|
||||
isLocked: DataTypes.BOOLEAN,
|
||||
isActive: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
isLocked: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
lastSeen: DataTypes.DATE
|
||||
}, {
|
||||
sequelize,
|
||||
|
|
|
|||
25
server/models/UserPermission.js
Normal file
25
server/models/UserPermission.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
const { DataTypes, Model } = require('sequelize')
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
class UserPermission extends Model { }
|
||||
|
||||
UserPermission.init({
|
||||
id: {
|
||||
type: DataTypes.UUID,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
primaryKey: true
|
||||
},
|
||||
key: DataTypes.STRING,
|
||||
value: DataTypes.STRING
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'UserPermission'
|
||||
})
|
||||
|
||||
const { User } = sequelize.models
|
||||
|
||||
User.hasMany(UserPermission)
|
||||
UserPermission.belongsTo(User)
|
||||
|
||||
return UserPermission
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue