import type { QueryBuilder, MutationBuilder, WithoutSystemFields, DocumentByName, RegisteredMutation, RegisteredQuery, FunctionVisibility, PaginationResult, SchemaDefinition, GenericSchema, TableNamesInDataModel, DataModelFromSchemaDefinition } from "convex/server"; import { paginationOptsValidator } from "convex/server"; import type { GenericId, Infer, Validator } from "convex/values"; /** * Create CRUD operations for a table. * You can expose these operations in your API. For example, in convex/users.ts: * * ```ts * // in convex/users.ts * import { crud } from "convex-helpers/server/crud"; * import schema from "./schema"; * * export const { create, read, update, destroy } = crud(schema, "users"); * ``` * * Then you can access the functions like `internal.users.create` from actions. * * To expose these functions publicly, you can pass in custom query and * mutation arguments. Be careful what you expose publicly: you wouldn't want * any client to be able to delete users, for example. * * @param schema Your project's schema. * @param table The table name to create CRUD operations for. * @param query The query to use - use internalQuery or query from * "./convex/_generated/server" or a customQuery. * @param mutation The mutation to use - use internalMutation or mutation from * "./convex/_generated/server" or a customMutation. * @returns An object with create, read, update, and delete functions. * You must export these functions at the top level of your file to use them. */ export declare function crud>>, QueryVisibility extends FunctionVisibility = "internal", MutationVisibility extends FunctionVisibility = "internal">(schema: SchemaDefinition, table: TableName, query?: QueryBuilder>, QueryVisibility>, mutation?: MutationBuilder>, MutationVisibility>): { create: RegisteredMutation, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName>>, Promise, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName>>>; read: RegisteredQuery; }, Promise, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName> | null>>; paginate: RegisteredQuery; }, Promise, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName>>>>; update: RegisteredMutation; patch: Partial, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName>>>; }, Promise>; destroy: RegisteredMutation; }, Promise, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } | import("convex/server").Expand<{ [TableName_1 in keyof Schema & string]: Schema[TableName_1] extends import("convex/server").TableDefinition, infer Indexes extends import("convex/server").GenericTableIndexes, infer SearchIndexes extends import("convex/server").GenericTableSearchIndexes, infer VectorIndexes extends import("convex/server").GenericTableVectorIndexes> ? { document: import("convex/server").Expand & import("convex/server").Expand>; fieldPaths: keyof import("convex/server").IdField | ("_creationTime" | DocumentType["fieldPaths"]); indexes: import("convex/server").Expand; searchIndexes: SearchIndexes; vectorIndexes: VectorIndexes; } : never; } & import("convex/server").AnyDataModel>, TableName>>>; }; //# sourceMappingURL=crud.d.ts.map