import type { GenericDatabaseWriter } from "convex/server"; import type { GenericId } from "convex/values"; import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as DatabaseSchema from "./DatabaseSchema"; import type * as DataModel from "./DataModel"; import type { DocumentByName as DocumentByName_ } from "./DataModel"; import * as Document from "./Document"; import * as QueryInitializer from "./QueryInitializer"; /** * The argument accepted by `patch`: like `Partial` without system fields, * but the fields that are already optional also accept `undefined`, since * setting a field to `undefined` unsets it. */ export type PatchValue = { [K in keyof Doc as K extends "_id" | "_creationTime" ? never : K]?: undefined extends Doc[K] ? Doc[K] | undefined : Doc[K]; }; export interface DatabaseWriterTableAccessor, Doc = DocumentByName_> { readonly insert: (document: Document.WithoutSystemFields) => Effect.Effect, Document.DocumentEncodeError>; readonly patch: (id: GenericId, patchedValues: PatchValue) => Effect.Effect; readonly replace: (id: GenericId, value: Document.WithoutSystemFields) => Effect.Effect; readonly delete: (id: GenericId) => Effect.Effect; } /** * The service shape backing the `DatabaseWriter` tag. Named (rather than an * inferred anonymous object) so declaration emit prints * `DatabaseWriterService<…>` by reference instead of expanding the data model. * `Docs` is the optional named document registry (see * `DatabaseReaderService`). */ export interface DatabaseWriterService { readonly table: >>(tableName: TableName) => DatabaseWriterTableAccessor, TableName, TableName extends keyof Docs ? Docs[TableName] : DocumentByName_, TableName>>; } /** * The tag's _Identifier_ is `Docs`-independent (see `DatabaseReaderTag`); only * the _Service_ carries `Docs` so writer inputs print the named doc * interfaces. */ export type DatabaseWriterTag = Context.Service, DatabaseWriterService>; export declare const make: (databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter>>) => DatabaseWriterService; export declare const DatabaseWriter: () => DatabaseWriterTag; export type DatabaseWriter = DatabaseWriterService; export declare const layer: (databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter>>) => Layer.Layer, never, never>; //# sourceMappingURL=DatabaseWriter.d.ts.map