audiobookshelf/server/models/CustomMetadataProvider.js
Barnabas Ratki 8027c4a06f Added support for custom metadata providers
WiP but already open to feedback
2024-01-03 20:25:34 +01:00

58 lines
1.0 KiB
JavaScript

const { DataTypes, Model, Sequelize } = require('sequelize')
class CustomMetadataProvider extends Model {
constructor(values, options) {
super(values, options)
/** @type {UUIDV4} */
this.id
/** @type {string} */
this.name
/** @type {string} */
this.url
/** @type {string} */
this.apiKey
}
getSlug() {
return `custom-${this.id}`
}
toUserJson() {
return {
name: this.name,
id: this.id,
slug: this.getSlug()
}
}
static findByPk(id) {
this.findOne({
where: {
id,
}
})
}
/**
* Initialize model
* @param {import('../Database').sequelize} sequelize
*/
static init(sequelize) {
super.init({
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
name: DataTypes.STRING,
url: DataTypes.STRING,
apiKey: DataTypes.STRING
}, {
sequelize,
modelName: 'customMetadataProvider'
})
}
}
module.exports = CustomMetadataProvider