ulthar-framework/packages/fabric/domain/models/state-store.ts

20 lines
762 B
TypeScript

import { Effect } from "@fabric/core";
import type { StoreQueryError } from "../errors/query-error.ts";
import type { ModelSchemaFromModels } from "./model-schema.ts";
import type { Model, ModelToType } from "./model.ts";
import type { StoreQuery } from "./store-query/store-query.ts";
export interface ReadonlyStateStore<TModel extends Model> {
from<T extends keyof ModelSchemaFromModels<TModel>>(
collection: T,
): StoreQuery<ModelToType<ModelSchemaFromModels<TModel>[T]>>;
}
export interface WritableStateStore<TModel extends Model>
extends ReadonlyStateStore<TModel> {
insertInto<T extends keyof ModelSchemaFromModels<TModel>>(
collection: T,
record: ModelToType<ModelSchemaFromModels<TModel>[T]>,
): Effect<void, StoreQueryError>;
}