Interface ModelManifest<Schema, HasRevisions, StaticMethods, InstanceMethods>

Model manifest definition - declarative model configuration Used by createModel() to generate properly typed model handles

Note: Relation types are inferred via Manifest['relations'] property access, not via generic parameter, enabling as const satisfies ModelManifest pattern.

interface ModelManifest<
    Schema extends
        Record<string, ModelSchemaField> = Record<string, ModelSchemaField>,
    HasRevisions extends boolean = boolean,
    StaticMethods extends object = EmptyStaticMethods,
    InstanceMethods extends object = Record<never, InstanceMethod>,
> {
    camelToSnake?: Record<string, string>;
    hasRevisions: HasRevisions;
    instanceMethods?: InstanceMethods & ThisType<
        InferInstance<
            ModelManifest<Schema, HasRevisions, StaticMethods, InstanceMethods>,
        >,
    >;
    relations?: readonly RelationDefinition[];
    schema: Schema;
    staticMethods?: StaticMethods & ThisType<
        InferConstructor<
            ModelManifest<Schema, HasRevisions, StaticMethods, InstanceMethods>,
        >,
    >;
    tableName: string;
    views?: Record<string, ModelViewDefinition<ModelInstance, JsonObject>>;
}

Type Parameters

Properties

camelToSnake?: Record<string, string>
hasRevisions: HasRevisions
instanceMethods?: InstanceMethods & ThisType<
    InferInstance<
        ModelManifest<Schema, HasRevisions, StaticMethods, InstanceMethods>,
    >,
>
relations?: readonly RelationDefinition[]
schema: Schema
staticMethods?: StaticMethods & ThisType<
    InferConstructor<
        ModelManifest<Schema, HasRevisions, StaticMethods, InstanceMethods>,
    >,
>
tableName: string
views?: Record<string, ModelViewDefinition<ModelInstance, JsonObject>>