audiobookshelf/server/objects/Folder.js
2024-02-25 19:11:53 +00:00

73 lines
No EOL
1.8 KiB
JavaScript

const uuidv4 = require("uuid").v4
/**
* @openapi
* components:
* schemas:
* oldFolderId:
* type: string
* description: The ID of folders created on server version 2.2.23 and before.
* format: "fol_[a-z0-9]{18}"
* example: fol_o78uaoeuh78h6aoeif
* newFolderId:
* type: string
* description: The folder ID for any folders added after 2.3.0.
* format: uuid
* example: e4bb1afb-4a4f-4dd6-8be0-e615d233185b
* folderId:
* type: string
* anyOf:
* - $ref: '#/components/schemas/oldFolderId'
* - $ref: '#/components/schemas/newFolderId'
* folder:
* type: object
* properties:
* id:
* $ref: '#/components/schemas/folderId'
* fullPath:
* description: The path on the server for the folder. (Read Only)
* type: string
* example: /podcasts
* libraryId:
* - $ref: '#/components/schemas/libraryId'
* addedAt:
* description: The time (in ms since POSIX epoch) when the folder was added. (Read Only)
* type: integer
* example: 1650462940610
*/
class Folder {
constructor(folder = null) {
this.id = null
this.fullPath = null
this.libraryId = null
this.addedAt = null
if (folder) {
this.construct(folder)
}
}
construct(folder) {
this.id = folder.id
this.fullPath = folder.fullPath
this.libraryId = folder.libraryId
this.addedAt = folder.addedAt
}
toJSON() {
return {
id: this.id,
fullPath: this.fullPath,
libraryId: this.libraryId,
addedAt: this.addedAt
}
}
setData(data) {
this.id = data.id || uuidv4()
this.fullPath = data.fullPath
this.libraryId = data.libraryId
this.addedAt = Date.now()
}
}
module.exports = Folder