mirror of https://github.com/requarks/wiki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
import type { FastifyInstance } from 'fastify'
|
|
|
|
export async function registerSchemas(app: FastifyInstance): Promise<void> {
|
|
/**
|
|
* ICON SET - An Iconify icon set added to this wiki
|
|
*/
|
|
app.addSchema({
|
|
$id: 'IconSet',
|
|
type: 'object',
|
|
properties: {
|
|
prefix: {
|
|
type: 'string',
|
|
description: 'Iconify prefix, i.e. the part before the colon in `mdi:account-edit`.'
|
|
},
|
|
name: {
|
|
type: 'string'
|
|
},
|
|
isEnabled: {
|
|
type: 'boolean',
|
|
description:
|
|
'A disabled set is not searchable and takes on no new icons, but the icons already stored for it keep being served so that published content does not break.'
|
|
},
|
|
info: {
|
|
type: 'object',
|
|
additionalProperties: true,
|
|
description:
|
|
'Iconify collection metadata (author, license, total, palette, samples, …) as published upstream. Empty until the first metadata refresh, which needs outbound access.'
|
|
},
|
|
iconCount: {
|
|
type: 'integer',
|
|
description:
|
|
'Icons of this set stored in the database, i.e. what this instance can serve without the upstream API.'
|
|
},
|
|
refreshedAt: {
|
|
type: 'string',
|
|
nullable: true
|
|
},
|
|
createdAt: {
|
|
type: 'string'
|
|
}
|
|
}
|
|
})
|
|
|
|
/**
|
|
* AVAILABLE ICON SET - A set offered upstream, whether or not it is added here
|
|
*/
|
|
app.addSchema({
|
|
$id: 'AvailableIconSet',
|
|
type: 'object',
|
|
properties: {
|
|
prefix: {
|
|
type: 'string'
|
|
},
|
|
name: {
|
|
type: 'string'
|
|
},
|
|
total: {
|
|
type: 'integer',
|
|
description: 'How many icons the set holds upstream.'
|
|
},
|
|
author: {
|
|
type: 'string'
|
|
},
|
|
license: {
|
|
type: 'string'
|
|
},
|
|
category: {
|
|
type: 'string'
|
|
},
|
|
palette: {
|
|
type: 'boolean',
|
|
description:
|
|
'Whether the icons carry their own colors, in which case they cannot be recolored.'
|
|
},
|
|
samples: {
|
|
type: 'array',
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
description: 'A few icon names from the set, for a preview.'
|
|
},
|
|
isAdded: {
|
|
type: 'boolean'
|
|
}
|
|
}
|
|
})
|
|
}
|