mirror of
https://github.com/bknd-io/bknd/
synced 2026-08-02 16:16:02 +00:00
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import { Const, type Static, Type, objectTransform } from "core/utils";
|
|
import { Adapters } from "media";
|
|
import { registries } from "modules/registries";
|
|
|
|
export const ADAPTERS = {
|
|
...Adapters
|
|
} as const;
|
|
|
|
export const registry = registries.media;
|
|
|
|
export function buildMediaSchema() {
|
|
const adapterSchemaObject = objectTransform(registry.all(), (adapter, name) => {
|
|
return Type.Object(
|
|
{
|
|
type: Const(name),
|
|
config: adapter.schema
|
|
},
|
|
{
|
|
title: adapter.schema.title ?? name,
|
|
description: adapter.schema.description,
|
|
additionalProperties: false
|
|
}
|
|
);
|
|
});
|
|
const adapterSchema = Type.Union(Object.values(adapterSchemaObject));
|
|
|
|
return Type.Object(
|
|
{
|
|
enabled: Type.Boolean({ default: false }),
|
|
basepath: Type.String({ default: "/api/media" }),
|
|
entity_name: Type.String({ default: "media" }),
|
|
storage: Type.Object(
|
|
{
|
|
body_max_size: Type.Optional(
|
|
Type.Number({
|
|
description: "Max size of the body in bytes. Leave blank for unlimited."
|
|
})
|
|
)
|
|
},
|
|
{ default: {} }
|
|
),
|
|
adapter: Type.Optional(adapterSchema)
|
|
},
|
|
{
|
|
additionalProperties: false
|
|
}
|
|
);
|
|
}
|
|
|
|
export const mediaConfigSchema = buildMediaSchema();
|
|
export type TAppMediaConfig = Static<typeof mediaConfigSchema>;
|