Cleaning up LibraryItem schemas

This commit is contained in:
Nicholas Wallace 2024-02-25 19:11:53 +00:00
parent c7ca8b7d65
commit 85586315f7
4 changed files with 76 additions and 174 deletions

View file

@ -4,21 +4,32 @@ const uuidv4 = require("uuid").v4
* @openapi * @openapi
* components: * components:
* schemas: * 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: * folder:
* type: object * type: object
* properties: * properties:
* id: * id:
* description: The ID of the folder. (Read Only) * $ref: '#/components/schemas/folderId'
* type: string
* example: fol_bev1zuxhb0j0s1wehr
* fullPath: * fullPath:
* description: The path on the server for the folder. (Read Only) * description: The path on the server for the folder. (Read Only)
* type: string * type: string
* example: /podcasts * example: /podcasts
* libraryId: * libraryId:
* oneOf: * - $ref: '#/components/schemas/libraryId'
* - $ref: '#/components/schemas/oldLibraryId'
* - $ref: '#/components/schemas/newLibraryId'
* addedAt: * addedAt:
* description: The time (in ms since POSIX epoch) when the folder was added. (Read Only) * description: The time (in ms since POSIX epoch) when the folder was added. (Read Only)
* type: integer * type: integer

View file

@ -6,10 +6,6 @@ const { filePathToPOSIX } = require('../utils/fileUtils')
* @openapi * @openapi
* components: * components:
* schemas: * schemas:
* mediaType:
* type: string
* description: The type of media, will be book or podcast.
* enum: [book, podcast]
* oldLibraryId: * oldLibraryId:
* type: string * type: string
* description: The ID of the libraries created on server version 2.2.23 and before. * description: The ID of the libraries created on server version 2.2.23 and before.

View file

@ -14,7 +14,7 @@ const { filePathToPOSIX, getFileTimestampsWithIno } = require('../utils/fileUtil
* @openapi * @openapi
* components: * components:
* schemas: * schemas:
* libraryItem: * libraryItemBase:
* type: object * type: object
* properties: * properties:
* id: * id:
@ -24,13 +24,11 @@ const { filePathToPOSIX, getFileTimestampsWithIno } = require('../utils/fileUtil
* ino: * ino:
* description: The inode of the library item. * description: The inode of the library item.
* type: string * type: string
* format: "[0-9]*"
* libraryId: * libraryId:
* oneOf: * $ref: '#/components/schemas/libraryId'
* - $ref: '#/components/schemas/oldLibraryId'
* - $ref: '#/components/schemas/newLibraryId'
* folderId: * folderId:
* description: The ID of the folder the library item is in. * $ref: '#/components/schemas/folderId'
* type: string
* path: * path:
* description: The path of the library item on the server. * description: The path of the library item on the server.
* type: string * type: string
@ -55,12 +53,6 @@ const { filePathToPOSIX, getFileTimestampsWithIno } = require('../utils/fileUtil
* updatedAt: * updatedAt:
* description: The time (in ms since POSIX epoch) when the library item was last updated. (Read Only) * description: The time (in ms since POSIX epoch) when the library item was last updated. (Read Only)
* type: integer * type: integer
* lastScan:
* description: The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item.
* type: integer
* scanVersion:
* description: The version of the scanner when last scanned. Will be null if it has not been scanned.
* type: string
* isMissing: * isMissing:
* description: Whether the library item was scanned and no longer exists. * description: Whether the library item was scanned and no longer exists.
* type: boolean * type: boolean
@ -69,174 +61,53 @@ const { filePathToPOSIX, getFileTimestampsWithIno } = require('../utils/fileUtil
* type: boolean * type: boolean
* mediaType: * mediaType:
* - $ref: '#/components/schemas/mediaType' * - $ref: '#/components/schemas/mediaType'
* media: * libraryItem:
* description: The media of the library item. * type: object
* oneOf: * description: A single item on the server, like a book or podcast.
* - $ref: '#/components/schemas/book' * allOf:
* - $ref: '#/components/schemas/podcast' * - $ref : '#/components/schemas/libraryItemBase'
* libraryFiles: * - folderId:
* - $ref : '#/components/schemas/folderId'
* - lastScan:
* description: The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item.
* type: integer
* - scanVersion:
* description: The version of the scanner when last scanned. Will be null if it has not been scanned.
* type: string
* - media:
* - $ref: '#/components/schemas/media'
* - libraryFiles:
* description: The files of the library item. * description: The files of the library item.
* type: array * type: array
* items: * items:
* $ref: '#/components/schemas/libraryFile' * $ref: '#/components/schemas/libraryFile'
* libraryItemMinified: * libraryItemMinified:
* type: object * type: object
* properties: * description: A single item on the server, like a book or podcast. Minified media format.
* id: * allOf:
* description: The ID of the library item. * - $ref : '#/components/schemas/libraryItemBase'
* type: string * - media:
* example: li_8gch9ve09orgn4fdz8 * - $ref: '#/components/schemas/mediaMinified'
* ino:
* description: The inode of the library item.
* type: string
* example: '649641337522215266'
* libraryId:
* oneOf:
* - $ref: '#/components/schemas/oldLibraryId'
* - $ref: '#/components/schemas/newLibraryId'
* folderId:
* description: The ID of the folder the library item is in.
* type: string
* example: fol_bev1zuxhb0j0s1wehr
* path:
* description: The path of the library item on the server.
* type: string
* example: /audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule
* relPath:
* description: The path, relative to the library folder, of the library item.
* type: string
* example: Terry Goodkind/Sword of Truth/Wizards First Rule
* isFile:
* description: Whether the library item is a single file in the root of the library folder.
* type: boolean
* example: false
* mtimeMs:
* description: The time (in ms since POSIX epoch) when the library item was last modified on disk.
* type: integer
* example: 1650621074299
* ctimeMs:
* description: The time (in ms since POSIX epoch) when the library item status was changed on disk.
* type: integer
* example: 1650621074299
* birthtimeMs:
* description: The time (in ms since POSIX epoch) when the library item was created on disk. Will be 0 if unknown.
* type: integer
* example: 0
* addedAt:
* description: The time (in ms since POSIX epoch) when the library item was added to the library.
* type: integer
* example: 1650621073750
* updatedAt:
* description: The time (in ms since POSIX epoch) when the library item was last updated. (Read Only)
* type: integer
* example: 1650621110769
* isMissing:
* description: Whether the library item was scanned and no longer exists.
* type: boolean
* example: false
* isInvalid:
* description: Whether the library item was scanned and no longer has media files.
* type: boolean
* example: false
* mediaType:
* - $ref: '#/components/schemas/mediaType'
* media:
* description: The media of the library item.
* type: object
* additionalProperties:
* oneOf:
* - $ref: '#/components/schemas/bookMinified'
* - $ref: '#/components/schemas/podcastMinified'
* numFiles:
* description: The number of library files for the library item.
* type: integer
* example: 2
* size:
* description: The total size (in bytes) of the library item.
* type: integer
* example: 268990279
* libraryItemExpanded: * libraryItemExpanded:
* type: object * type: object
* properties: * allOf:
* id: * - $ref : '#/components/schemas/libraryItemBase'
* description: The ID of the library item. * - folderId:
* type: string * - $ref : '#/components/schemas/folderId'
* example: li_8gch9ve09orgn4fdz8 * - lastScan:
* ino:
* description: The inode of the library item.
* type: string
* example: '649641337522215266'
* libraryId:
* oneOf:
* - $ref: '#/components/schemas/oldLibraryId'
* - $ref: '#/components/schemas/newLibraryId'
* folderId:
* description: The ID of the folder the library item is in.
* type: string
* example: fol_bev1zuxhb0j0s1wehr
* path:
* description: The path of the library item on the server.
* type: string
* example: /audiobooks/Terry Goodkind/Sword of Truth/Wizards First Rule
* relPath:
* description: The path, relative to the library folder, of the library item.
* type: string
* example: Terry Goodkind/Sword of Truth/Wizards First Rule
* isFile:
* description: Whether the library item is a single file in the root of the library folder.
* type: boolean
* example: false
* mtimeMs:
* description: The time (in ms since POSIX epoch) when the library item was last modified on disk.
* type: integer
* example: 1650621074299
* ctimeMs:
* description: The time (in ms since POSIX epoch) when the library item status was changed on disk.
* type: integer
* example: 1650621074299
* birthtimeMs:
* description: The time (in ms since POSIX epoch) when the library item was created on disk. Will be 0 if unknown.
* type: integer
* example: 0
* addedAt:
* description: The time (in ms since POSIX epoch) when the library item was added to the library.
* type: integer
* example: 1650621073750
* updatedAt:
* description: The time (in ms since POSIX epoch) when the library item was last updated. (Read Only)
* type: integer
* example: 1650621110769
* lastScan:
* description: The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item. * description: The time (in ms since POSIX epoch) when the library item was last scanned. Will be null if the server has not yet scanned the library item.
* type: integer * type: integer
* example: 1651830827825 * - scanVersion:
* scanVersion:
* description: The version of the scanner when last scanned. Will be null if it has not been scanned. * description: The version of the scanner when last scanned. Will be null if it has not been scanned.
* type: string * type: string
* example: 2.0.21 * - media:
* isMissing: * - $ref: '#/components/schemas/mediaExpanded'
* description: Whether the library item was scanned and no longer exists. * - libraryFiles:
* type: boolean
* example: false
* isInvalid:
* description: Whether the library item was scanned and no longer has media files.
* type: boolean
* example: false
* mediaType:
* - $ref: '#/components/schemas/mediaType'
* media:
* description: The media of the library item.
* type: object
* additionalProperties:
* oneOf:
* - $ref: '#/components/schemas/bookExpanded'
* - $ref: '#/components/schemas/podcastExpanded'
* libraryFiles:
* description: The files of the library item. * description: The files of the library item.
* type: array * type: array
* items: * items:
* $ref: '#/components/schemas/libraryFile' * $ref: '#/components/schemas/libraryFile'
* size: * - size:
* description: The total size (in bytes) of the library item. * description: The total size (in bytes) of the library item.
* type: integer * type: integer
* example: 268990279 * example: 268990279

View file

@ -0,0 +1,24 @@
/**
* @openapi
* components:
* schemas:
* mediaType:
* type: string
* description: The type of media, will be book or podcast.
* enum: [book, podcast]
* media:
* description: The media of the library item.
* oneOf:
* - $ref: '#/components/schemas/book'
* - $ref: '#/components/schemas/podcast'
* mediaMinified:
* description: The minified media of the library item.
* oneOf:
* - $ref: '#/components/schemas/bookMinified'
* - $ref: '#/components/schemas/podcastMinified'
* mediaExpanded:
* description: The expanded media of the library item.
* oneOf:
* - $ref: '#/components/schemas/bookExpanded'
* - $ref: '#/components/schemas/podcastExpanded'
*/