@confect/server 9.0.0-next.1 → 9.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +293 -4
- package/dist/ActionCtx.d.ts +4 -11
- package/dist/ActionCtx.d.ts.map +1 -1
- package/dist/ActionCtx.js +1 -1
- package/dist/ActionCtx.js.map +1 -1
- package/dist/ActionRunner.d.ts +8 -13
- package/dist/ActionRunner.d.ts.map +1 -1
- package/dist/ActionRunner.js +4 -3
- package/dist/ActionRunner.js.map +1 -1
- package/dist/Auth.d.ts +17 -23
- package/dist/Auth.d.ts.map +1 -1
- package/dist/Auth.js +5 -1
- package/dist/Auth.js.map +1 -1
- package/dist/BlobNotFoundError.d.ts +6 -12
- package/dist/BlobNotFoundError.d.ts.map +1 -1
- package/dist/BlobNotFoundError.js +1 -1
- package/dist/BlobNotFoundError.js.map +1 -1
- package/dist/ConvexConfigProvider.d.ts +2 -9
- package/dist/ConvexConfigProvider.d.ts.map +1 -1
- package/dist/ConvexConfigProvider.js +6 -1
- package/dist/ConvexConfigProvider.js.map +1 -1
- package/dist/CronJob.d.ts +12 -19
- package/dist/CronJob.d.ts.map +1 -1
- package/dist/CronJob.js +1 -1
- package/dist/CronJob.js.map +1 -1
- package/dist/CronJobs.d.ts +11 -18
- package/dist/CronJobs.d.ts.map +1 -1
- package/dist/CronJobs.js +11 -4
- package/dist/CronJobs.js.map +1 -1
- package/dist/DataModel.d.ts +24 -29
- package/dist/DataModel.d.ts.map +1 -1
- package/dist/DatabaseReader.d.ts +4323 -64
- package/dist/DatabaseReader.d.ts.map +1 -1
- package/dist/DatabaseReader.js +6 -6
- package/dist/DatabaseReader.js.map +1 -1
- package/dist/DatabaseSchema.d.ts +38 -130
- package/dist/DatabaseSchema.d.ts.map +1 -1
- package/dist/DatabaseSchema.js +20 -30
- package/dist/DatabaseSchema.js.map +1 -1
- package/dist/DatabaseWriter.d.ts +38 -42
- package/dist/DatabaseWriter.d.ts.map +1 -1
- package/dist/DatabaseWriter.js +8 -5
- package/dist/DatabaseWriter.js.map +1 -1
- package/dist/Document.d.ts +28 -37
- package/dist/Document.d.ts.map +1 -1
- package/dist/Document.js +5 -1
- package/dist/Document.js.map +1 -1
- package/dist/FunctionImpl.d.ts +30 -29
- package/dist/FunctionImpl.d.ts.map +1 -1
- package/dist/FunctionImpl.js +25 -14
- package/dist/FunctionImpl.js.map +1 -1
- package/dist/GroupImpl.d.ts +45 -41
- package/dist/GroupImpl.d.ts.map +1 -1
- package/dist/GroupImpl.js +42 -35
- package/dist/GroupImpl.js.map +1 -1
- package/dist/Handler.d.ts +34 -40
- package/dist/Handler.d.ts.map +1 -1
- package/dist/HttpApi.d.ts +21 -25
- package/dist/HttpApi.d.ts.map +1 -1
- package/dist/HttpApi.js +11 -6
- package/dist/HttpApi.js.map +1 -1
- package/dist/MutationCtx.d.ts +4 -11
- package/dist/MutationCtx.d.ts.map +1 -1
- package/dist/MutationCtx.js +1 -1
- package/dist/MutationCtx.js.map +1 -1
- package/dist/MutationRunner.d.ts +8 -13
- package/dist/MutationRunner.d.ts.map +1 -1
- package/dist/MutationRunner.js +4 -3
- package/dist/MutationRunner.js.map +1 -1
- package/dist/OrderedQuery.d.ts +16 -21
- package/dist/OrderedQuery.d.ts.map +1 -1
- package/dist/OrderedQuery.js +4 -1
- package/dist/OrderedQuery.js.map +1 -1
- package/dist/QueryCtx.d.ts +4 -11
- package/dist/QueryCtx.d.ts.map +1 -1
- package/dist/QueryCtx.js +1 -1
- package/dist/QueryCtx.js.map +1 -1
- package/dist/QueryInitializer.d.ts +34 -39
- package/dist/QueryInitializer.d.ts.map +1 -1
- package/dist/QueryInitializer.js +5 -1
- package/dist/QueryInitializer.js.map +1 -1
- package/dist/QueryRunner.d.ts +8 -13
- package/dist/QueryRunner.d.ts.map +1 -1
- package/dist/QueryRunner.js +4 -3
- package/dist/QueryRunner.js.map +1 -1
- package/dist/RegisteredConvexFunction.d.ts +1107 -60
- package/dist/RegisteredConvexFunction.d.ts.map +1 -1
- package/dist/RegisteredConvexFunction.js +14 -9
- package/dist/RegisteredConvexFunction.js.map +1 -1
- package/dist/RegisteredFunction.d.ts +48 -64
- package/dist/RegisteredFunction.d.ts.map +1 -1
- package/dist/RegisteredFunction.js +9 -5
- package/dist/RegisteredFunction.js.map +1 -1
- package/dist/RegisteredFunctions.d.ts +48 -26
- package/dist/RegisteredFunctions.d.ts.map +1 -1
- package/dist/RegisteredFunctions.js +22 -9
- package/dist/RegisteredFunctions.js.map +1 -1
- package/dist/RegisteredNodeFunction.d.ts +4 -14
- package/dist/RegisteredNodeFunction.d.ts.map +1 -1
- package/dist/RegisteredNodeFunction.js +5 -4
- package/dist/RegisteredNodeFunction.js.map +1 -1
- package/dist/RegistryItem.d.ts +17 -27
- package/dist/RegistryItem.d.ts.map +1 -1
- package/dist/RegistryItem.js +1 -1
- package/dist/RegistryItem.js.map +1 -1
- package/dist/Scheduler.d.ts +16 -20
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +10 -6
- package/dist/Scheduler.js.map +1 -1
- package/dist/SchemaToValidator.d.ts +71 -64
- package/dist/SchemaToValidator.d.ts.map +1 -1
- package/dist/SchemaToValidator.js +15 -3
- package/dist/SchemaToValidator.js.map +1 -1
- package/dist/StorageActionWriter.d.ts +21 -28
- package/dist/StorageActionWriter.d.ts.map +1 -1
- package/dist/StorageActionWriter.js +4 -1
- package/dist/StorageActionWriter.js.map +1 -1
- package/dist/StorageReader.d.ts +14 -21
- package/dist/StorageReader.d.ts.map +1 -1
- package/dist/StorageReader.js +5 -1
- package/dist/StorageReader.js.map +1 -1
- package/dist/StorageWriter.d.ts +16 -23
- package/dist/StorageWriter.d.ts.map +1 -1
- package/dist/StorageWriter.js +4 -1
- package/dist/StorageWriter.js.map +1 -1
- package/dist/Table.d.ts +204 -197
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +72 -62
- package/dist/Table.js.map +1 -1
- package/dist/TableInfo.d.ts +35 -41
- package/dist/TableInfo.d.ts.map +1 -1
- package/dist/VectorSearch.d.ts +30 -35
- package/dist/VectorSearch.d.ts.map +1 -1
- package/dist/VectorSearch.js +3 -1
- package/dist/VectorSearch.js.map +1 -1
- package/dist/index.d.ts +35 -36
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -5
- package/dist/internal/utils.d.ts +9 -11
- package/dist/internal/utils.d.ts.map +1 -1
- package/dist/internal/utils.js +3 -1
- package/dist/internal/utils.js.map +1 -1
- package/dist/node.d.ts +2 -2
- package/dist/node.d.ts.map +1 -0
- package/dist/tsconfig.src.tsbuildinfo +1 -0
- package/package.json +50 -59
- package/src/ActionCtx.ts +1 -1
- package/src/ActionRunner.ts +2 -1
- package/src/Auth.ts +5 -1
- package/src/BlobNotFoundError.ts +1 -1
- package/src/ConvexConfigProvider.ts +6 -8
- package/src/CronJob.ts +1 -1
- package/src/CronJobs.ts +8 -10
- package/src/DatabaseReader.ts +18 -21
- package/src/DatabaseSchema.ts +38 -98
- package/src/DatabaseWriter.ts +13 -6
- package/src/Document.ts +5 -1
- package/src/FunctionImpl.ts +36 -44
- package/src/GroupImpl.ts +54 -81
- package/src/HttpApi.ts +8 -9
- package/src/MutationCtx.ts +1 -1
- package/src/MutationRunner.ts +2 -1
- package/src/OrderedQuery.ts +5 -1
- package/src/QueryCtx.ts +1 -1
- package/src/QueryInitializer.ts +15 -3
- package/src/QueryRunner.ts +2 -1
- package/src/RegisteredConvexFunction.ts +11 -7
- package/src/RegisteredFunction.ts +5 -1
- package/src/RegisteredFunctions.ts +69 -93
- package/src/RegisteredNodeFunction.ts +7 -6
- package/src/RegistryItem.ts +1 -1
- package/src/Scheduler.ts +5 -1
- package/src/SchemaToValidator.ts +14 -16
- package/src/StorageActionWriter.ts +4 -1
- package/src/StorageReader.ts +5 -1
- package/src/StorageWriter.ts +4 -1
- package/src/Table.ts +253 -132
- package/src/VectorSearch.ts +3 -1
- package/src/index.ts +0 -1
- package/src/internal/utils.ts +3 -1
- package/dist/Api.d.ts +0 -30
- package/dist/Api.d.ts.map +0 -1
- package/dist/Api.js +0 -26
- package/dist/Api.js.map +0 -1
- package/dist/GroupPath.d.ts +0 -8
- package/dist/GroupPath.d.ts.map +0 -1
- package/dist/GroupPath.js +0 -10
- package/dist/GroupPath.js.map +0 -1
- package/src/Api.ts +0 -75
- package/src/GroupPath.ts +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseReader.d.ts","
|
|
1
|
+
{"version":3,"file":"DatabaseReader.d.ts","sourceRoot":"","sources":["../src/DatabaseReader.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCxB,CAAC;AAEJ,MAAM,MAAM,cAAc,CACxB,eAAe,SAAS,cAAc,CAAC,YAAY,IACjD,UAAU,CAAC,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAErE,eAAO,MAAM,KAAK,GAAI,eAAe,SAAS,cAAc,CAAC,YAAY,EACvE,gBAAgB,eAAe,EAC/B,sBAAsB,qBAAqB,CACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAC1D;kBA/Ce,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAoDxB,CAAC"}
|
package/dist/DatabaseReader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { systemTables } from "./Table.js";
|
|
3
|
-
import { extendWithSystemTables } from "./DatabaseSchema.js";
|
|
4
2
|
import { make as make$1 } from "./QueryInitializer.js";
|
|
5
|
-
import {
|
|
3
|
+
import { systemTables } from "./Table.js";
|
|
4
|
+
import * as Context from "effect/Context";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
6
|
|
|
7
7
|
//#region src/DatabaseReader.ts
|
|
8
8
|
var DatabaseReader_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -11,16 +11,16 @@ var DatabaseReader_exports = /* @__PURE__ */ __exportAll({
|
|
|
11
11
|
make: () => make
|
|
12
12
|
});
|
|
13
13
|
const make = (databaseSchema, convexDatabaseReader) => {
|
|
14
|
-
const extendedTables = extendWithSystemTables(databaseSchema.tables);
|
|
15
14
|
return { table: (tableName) => {
|
|
16
|
-
const
|
|
17
|
-
const baseDatabaseReader =
|
|
15
|
+
const isSystem = Object.hasOwn(systemTables, tableName);
|
|
16
|
+
const baseDatabaseReader = isSystem ? {
|
|
18
17
|
get: convexDatabaseReader.system.get,
|
|
19
18
|
query: convexDatabaseReader.system.query
|
|
20
19
|
} : {
|
|
21
20
|
get: convexDatabaseReader.get,
|
|
22
21
|
query: convexDatabaseReader.query
|
|
23
22
|
};
|
|
23
|
+
const table = isSystem ? systemTables[tableName] : databaseSchema.tables[tableName];
|
|
24
24
|
return make$1(tableName, baseDatabaseReader, table);
|
|
25
25
|
} };
|
|
26
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseReader.js","names":["
|
|
1
|
+
{"version":3,"file":"DatabaseReader.js","names":["Table.systemTables","QueryInitializer.make"],"sources":["../src/DatabaseReader.ts"],"sourcesContent":["import type { GenericDatabaseReader } from \"convex/server\";\nimport * as Context from \"effect/Context\";\nimport * as Layer from \"effect/Layer\";\nimport type { BaseDatabaseReader } from \"@confect/core/Types\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport type * as DataModel from \"./DataModel\";\nimport * as QueryInitializer from \"./QueryInitializer\";\nimport * as Table from \"./Table\";\n\nexport const make = <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(\n databaseSchema: DatabaseSchema_,\n convexDatabaseReader: GenericDatabaseReader<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) => {\n type Tables = DatabaseSchema.Tables<DatabaseSchema_>;\n type IncludedTables = Tables | Table.SystemTables;\n\n return {\n table: <const TableName extends Table.Name<IncludedTables>>(\n tableName: TableName,\n ) => {\n const isSystem = Object.hasOwn(Table.systemTables, tableName);\n\n const baseDatabaseReader: BaseDatabaseReader<any> = isSystem\n ? {\n get: convexDatabaseReader.system.get,\n query: convexDatabaseReader.system.query,\n }\n : {\n get: convexDatabaseReader.get,\n query: convexDatabaseReader.query,\n };\n\n const table = (\n isSystem\n ? (Table.systemTables as Record<string, Table.AnyWithProps>)[\n tableName\n ]\n : databaseSchema.tables[tableName]\n ) as Table.WithName<IncludedTables, TableName>;\n\n return QueryInitializer.make<IncludedTables, TableName>(\n tableName,\n baseDatabaseReader,\n table,\n );\n },\n };\n};\n\nexport const DatabaseReader = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n>() =>\n Context.GenericTag<ReturnType<typeof make<DatabaseSchema_>>>(\n \"@confect/server/DatabaseReader\",\n );\n\nexport type DatabaseReader<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n> = ReturnType<typeof DatabaseReader<DatabaseSchema_>>[\"Identifier\"];\n\nexport const layer = <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(\n databaseSchema: DatabaseSchema_,\n convexDatabaseReader: GenericDatabaseReader<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) =>\n Layer.succeed(\n DatabaseReader<DatabaseSchema_>(),\n make(databaseSchema, convexDatabaseReader),\n );\n"],"mappings":";;;;;;;;;;;;AASA,MAAa,QACX,gBACA,yBAGG;AAIH,QAAO,EACL,QACE,cACG;EACH,MAAM,WAAW,OAAO,OAAOA,cAAoB,UAAU;EAE7D,MAAM,qBAA8C,WAChD;GACE,KAAK,qBAAqB,OAAO;GACjC,OAAO,qBAAqB,OAAO;GACpC,GACD;GACE,KAAK,qBAAqB;GAC1B,OAAO,qBAAqB;GAC7B;EAEL,MAAM,QACJ,WACKA,aACC,aAEF,eAAe,OAAO;AAG5B,SAAOC,OACL,WACA,oBACA,MACD;IAEJ;;AAGH,MAAa,uBAGX,QAAQ,WACN,iCACD;AAMH,MAAa,SACX,gBACA,yBAIA,MAAM,QACJ,gBAAiC,EACjC,KAAK,gBAAgB,qBAAqB,CAC3C"}
|
package/dist/DatabaseSchema.d.ts
CHANGED
|
@@ -1,139 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
//#region src/DatabaseSchema.d.ts
|
|
7
|
-
declare namespace DatabaseSchema_d_exports {
|
|
8
|
-
export { Any, AnyWithProps, ConvexDatabaseSchemaFromTables, DatabaseSchema, ExtendWithSystemTables, IncludeSystemTables, TableNames, TableWithName, Tables, TypeId, extendWithSystemTables, isDatabaseSchema, make, systemSchema };
|
|
1
|
+
import type * as Table from "./Table";
|
|
2
|
+
export declare const TypeId = "@confect/server/DatabaseSchema";
|
|
3
|
+
export type TypeId = typeof TypeId;
|
|
4
|
+
export interface Any {
|
|
5
|
+
readonly [TypeId]: TypeId;
|
|
9
6
|
}
|
|
10
|
-
declare const
|
|
11
|
-
type TypeId = typeof TypeId;
|
|
12
|
-
interface Any {
|
|
13
|
-
readonly [TypeId]: TypeId;
|
|
14
|
-
}
|
|
15
|
-
declare const isDatabaseSchema: (u: unknown) => u is Any;
|
|
7
|
+
export declare const isDatabaseSchema: (u: unknown) => u is Any;
|
|
16
8
|
/**
|
|
17
|
-
* A schema definition
|
|
9
|
+
* A schema definition holding a record of bound `Table`s keyed by table
|
|
10
|
+
* name. Codegen emits a single static `DatabaseSchema.make({ ... })` call;
|
|
11
|
+
* laziness lives entirely on each `Table` (its `Fields`, `Doc`, and
|
|
12
|
+
* `tableDefinition` are lazy memoised getters), so this layer is a plain
|
|
13
|
+
* record indirection with no module-loading or async machinery.
|
|
18
14
|
*/
|
|
19
|
-
interface DatabaseSchema<Tables_ extends AnyWithProps
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* Add a table definition to the schema.
|
|
25
|
-
*/
|
|
26
|
-
addTable<TableDef extends AnyWithProps$1>(table: TableDef): DatabaseSchema<Tables_ | TableDef>;
|
|
15
|
+
export interface DatabaseSchema<Tables_ extends Table.AnyWithProps = never> {
|
|
16
|
+
readonly [TypeId]: TypeId;
|
|
17
|
+
readonly tables: {
|
|
18
|
+
readonly [TableName in Table.Name<Tables_>]: Table.WithName<Tables_, TableName>;
|
|
19
|
+
};
|
|
27
20
|
}
|
|
28
|
-
interface AnyWithProps {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly convexSchemaDefinition: SchemaDefinition<GenericSchema, true>;
|
|
32
|
-
addTable<TableDef extends AnyWithProps$1>(table: TableDef): AnyWithProps;
|
|
21
|
+
export interface AnyWithProps {
|
|
22
|
+
readonly [TypeId]: TypeId;
|
|
23
|
+
readonly tables: Record<string, Table.AnyWithProps>;
|
|
33
24
|
}
|
|
34
|
-
type Tables<DatabaseSchema_ extends AnyWithProps> = DatabaseSchema_ extends DatabaseSchema<infer Tables_> ? Tables_ : never;
|
|
35
|
-
type TableNames<DatabaseSchema_ extends AnyWithProps> = Name<Tables<DatabaseSchema_>> & string;
|
|
36
|
-
type TableWithName<DatabaseSchema_ extends AnyWithProps, TableName extends TableNames<DatabaseSchema_>> = Extract<Tables<DatabaseSchema_>, {
|
|
37
|
-
|
|
25
|
+
export type Tables<DatabaseSchema_ extends AnyWithProps> = DatabaseSchema_ extends DatabaseSchema<infer Tables_> ? Tables_ : never;
|
|
26
|
+
export type TableNames<DatabaseSchema_ extends AnyWithProps> = Table.Name<Tables<DatabaseSchema_>> & string;
|
|
27
|
+
export type TableWithName<DatabaseSchema_ extends AnyWithProps, TableName extends TableNames<DatabaseSchema_>> = Extract<Tables<DatabaseSchema_>, {
|
|
28
|
+
readonly tableName: TableName;
|
|
38
29
|
}>;
|
|
39
30
|
/**
|
|
40
|
-
*
|
|
31
|
+
* Construct a `DatabaseSchema` from a record of bound `Table`s. The empty
|
|
32
|
+
* case is `DatabaseSchema.make({})`. The `Tables_` union is inferred from
|
|
33
|
+
* the value record's values, so codegen-emitted calls of the form
|
|
34
|
+
* `DatabaseSchema.make({ notes, tags, users })` do not need an explicit
|
|
35
|
+
* type argument.
|
|
36
|
+
*
|
|
37
|
+
* Invariant: each record **key must equal its value's `tableName`**. The
|
|
38
|
+
* record is stored verbatim and later read by key (`databaseSchema.tables[
|
|
39
|
+
* tableName]` in `DatabaseReader`/`DatabaseWriter`), so a key that diverges
|
|
40
|
+
* from the bound table's name would make those lookups silently miss. The
|
|
41
|
+
* type signature does not enforce this — codegen upholds it by deriving both
|
|
42
|
+
* the key and the table name from the same filename (and the shorthand
|
|
43
|
+
* `{ notes, tags, users }` form it emits makes them identical by
|
|
44
|
+
* construction). Hand-written calls must preserve it.
|
|
41
45
|
*/
|
|
42
|
-
declare const make: () => DatabaseSchema<
|
|
43
|
-
type ConvexDatabaseSchemaFromTables<Tables_ extends AnyWithProps$1> = Expand<{ [TableName in Name<Tables_> & string]: WithName<Tables_, TableName>["tableDefinition"] }>;
|
|
44
|
-
declare const systemSchema: DatabaseSchema<Table<"_scheduled_functions", effect_Schema0.Struct<{
|
|
45
|
-
name: typeof effect_Schema0.String;
|
|
46
|
-
args: effect_Schema0.Array$<typeof effect_Schema0.Any>;
|
|
47
|
-
scheduledTime: typeof effect_Schema0.Number;
|
|
48
|
-
completedTime: effect_Schema0.optionalWith<typeof effect_Schema0.Number, {
|
|
49
|
-
exact: true;
|
|
50
|
-
}>;
|
|
51
|
-
state: effect_Schema0.Union<[effect_Schema0.Struct<{
|
|
52
|
-
kind: effect_Schema0.Literal<["pending"]>;
|
|
53
|
-
}>, effect_Schema0.Struct<{
|
|
54
|
-
kind: effect_Schema0.Literal<["inProgress"]>;
|
|
55
|
-
}>, effect_Schema0.Struct<{
|
|
56
|
-
kind: effect_Schema0.Literal<["success"]>;
|
|
57
|
-
}>, effect_Schema0.Struct<{
|
|
58
|
-
kind: effect_Schema0.Literal<["failed"]>;
|
|
59
|
-
error: typeof effect_Schema0.String;
|
|
60
|
-
}>, effect_Schema0.Struct<{
|
|
61
|
-
kind: effect_Schema0.Literal<["canceled"]>;
|
|
62
|
-
}>]>;
|
|
63
|
-
}>, convex_values0.VObject<{
|
|
64
|
-
name: string;
|
|
65
|
-
args: any[];
|
|
66
|
-
scheduledTime: number;
|
|
67
|
-
state: {
|
|
68
|
-
kind: "pending";
|
|
69
|
-
} | {
|
|
70
|
-
kind: "inProgress";
|
|
71
|
-
} | {
|
|
72
|
-
kind: "success";
|
|
73
|
-
} | {
|
|
74
|
-
kind: "failed";
|
|
75
|
-
error: string;
|
|
76
|
-
} | {
|
|
77
|
-
kind: "canceled";
|
|
78
|
-
};
|
|
79
|
-
completedTime?: number;
|
|
80
|
-
}, {
|
|
81
|
-
name: convex_values0.VString<string, "required">;
|
|
82
|
-
args: convex_values0.VArray<any[], convex_values0.VAny<any, "required", string>, "required">;
|
|
83
|
-
scheduledTime: convex_values0.VFloat64<number, "required">;
|
|
84
|
-
state: convex_values0.VUnion<{
|
|
85
|
-
kind: "pending";
|
|
86
|
-
} | {
|
|
87
|
-
kind: "inProgress";
|
|
88
|
-
} | {
|
|
89
|
-
kind: "success";
|
|
90
|
-
} | {
|
|
91
|
-
kind: "failed";
|
|
92
|
-
error: string;
|
|
93
|
-
} | {
|
|
94
|
-
kind: "canceled";
|
|
95
|
-
}, [convex_values0.VObject<{
|
|
96
|
-
kind: "pending";
|
|
97
|
-
}, {
|
|
98
|
-
kind: convex_values0.VLiteral<"pending", "required">;
|
|
99
|
-
}, "required", "kind">, convex_values0.VObject<{
|
|
100
|
-
kind: "inProgress";
|
|
101
|
-
}, {
|
|
102
|
-
kind: convex_values0.VLiteral<"inProgress", "required">;
|
|
103
|
-
}, "required", "kind">, convex_values0.VObject<{
|
|
104
|
-
kind: "success";
|
|
105
|
-
}, {
|
|
106
|
-
kind: convex_values0.VLiteral<"success", "required">;
|
|
107
|
-
}, "required", "kind">, convex_values0.VObject<{
|
|
108
|
-
kind: "failed";
|
|
109
|
-
error: string;
|
|
110
|
-
}, {
|
|
111
|
-
kind: convex_values0.VLiteral<"failed", "required">;
|
|
112
|
-
error: convex_values0.VString<string, "required">;
|
|
113
|
-
}, "required", "kind" | "error">, convex_values0.VObject<{
|
|
114
|
-
kind: "canceled";
|
|
115
|
-
}, {
|
|
116
|
-
kind: convex_values0.VLiteral<"canceled", "required">;
|
|
117
|
-
}, "required", "kind">], "required", "kind" | "error">;
|
|
118
|
-
completedTime: convex_values0.VFloat64<number | undefined, "optional">;
|
|
119
|
-
}, "required", "name" | "args" | "scheduledTime" | "completedTime" | "state" | "state.kind" | "state.error">, {}, {}, {}> | Table<"_storage", effect_Schema0.Struct<{
|
|
120
|
-
sha256: typeof effect_Schema0.String;
|
|
121
|
-
size: typeof effect_Schema0.Number;
|
|
122
|
-
contentType: effect_Schema0.optionalWith<typeof effect_Schema0.String, {
|
|
123
|
-
exact: true;
|
|
124
|
-
}>;
|
|
125
|
-
}>, convex_values0.VObject<{
|
|
126
|
-
sha256: string;
|
|
127
|
-
size: number;
|
|
128
|
-
contentType?: string;
|
|
129
|
-
}, {
|
|
130
|
-
sha256: convex_values0.VString<string, "required">;
|
|
131
|
-
size: convex_values0.VFloat64<number, "required">;
|
|
132
|
-
contentType: convex_values0.VString<string | undefined, "optional">;
|
|
133
|
-
}, "required", "sha256" | "size" | "contentType">, {}, {}, {}>>;
|
|
134
|
-
declare const extendWithSystemTables: <Tables_ extends AnyWithProps$1>(tables: TablesRecord<Tables_>) => ExtendWithSystemTables<Tables_>;
|
|
135
|
-
type ExtendWithSystemTables<Tables_ extends AnyWithProps$1> = TablesRecord<Tables_ | SystemTables>;
|
|
136
|
-
type IncludeSystemTables<Tables_ extends AnyWithProps$1> = Tables_ | SystemTables extends infer T ? T extends AnyWithProps$1 ? T : never : never;
|
|
137
|
-
//#endregion
|
|
138
|
-
export { Any, AnyWithProps, ConvexDatabaseSchemaFromTables, DatabaseSchema, DatabaseSchema_d_exports, ExtendWithSystemTables, IncludeSystemTables, TableNames, TableWithName, Tables, TypeId, extendWithSystemTables, isDatabaseSchema, make, systemSchema };
|
|
46
|
+
export declare const make: <const TablesRecord extends Record<string, Table.AnyWithProps>>(tables: TablesRecord) => DatabaseSchema<TablesRecord[keyof TablesRecord]>;
|
|
139
47
|
//# sourceMappingURL=DatabaseSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSchema.d.ts","
|
|
1
|
+
{"version":3,"file":"DatabaseSchema.d.ts","sourceRoot":"","sources":["../src/DatabaseSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,GACjB,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,KAAK,CAAC,YAAY,GAAG,KAAK;IACxE,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CACzD,OAAO,EACP,SAAS,CACV;KACF,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,MAAM,CAAC,eAAe,SAAS,YAAY,IACrD,eAAe,SAAS,cAAc,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;AAE1E,MAAM,MAAM,UAAU,CAAC,eAAe,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CACvE,MAAM,CAAC,eAAe,CAAC,CACxB,GACC,MAAM,CAAC;AAET,MAAM,MAAM,aAAa,CACvB,eAAe,SAAS,YAAY,EACpC,SAAS,SAAS,UAAU,CAAC,eAAe,CAAC,IAC3C,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAE7D,QAAQ,YAAY,KACnB,cAAc,CAAC,YAAY,CAAC,MAAM,YAAY,CAAC,CAKhD,CAAC"}
|
package/dist/DatabaseSchema.js
CHANGED
|
@@ -1,45 +1,35 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
-
import
|
|
3
|
-
import { Array, Predicate, Record, pipe } from "effect";
|
|
4
|
-
import { defineSchema } from "convex/server";
|
|
2
|
+
import * as Predicate from "effect/Predicate";
|
|
5
3
|
|
|
6
4
|
//#region src/DatabaseSchema.ts
|
|
7
5
|
var DatabaseSchema_exports = /* @__PURE__ */ __exportAll({
|
|
8
6
|
TypeId: () => TypeId,
|
|
9
|
-
extendWithSystemTables: () => extendWithSystemTables,
|
|
10
7
|
isDatabaseSchema: () => isDatabaseSchema,
|
|
11
|
-
make: () => make
|
|
12
|
-
systemSchema: () => systemSchema
|
|
8
|
+
make: () => make
|
|
13
9
|
});
|
|
14
10
|
const TypeId = "@confect/server/DatabaseSchema";
|
|
15
11
|
const isDatabaseSchema = (u) => Predicate.hasProperty(u, TypeId);
|
|
16
|
-
const Proto = {
|
|
17
|
-
[TypeId]: TypeId,
|
|
18
|
-
addTable(table) {
|
|
19
|
-
const newTablesArray = [...Object.values(this.tables), table];
|
|
20
|
-
return makeProto({
|
|
21
|
-
tables: Record.set(this.tables, table.name, table),
|
|
22
|
-
convexSchemaDefinition: pipe(newTablesArray, Array.map(({ name, tableDefinition }) => [name, tableDefinition]), Record.fromEntries, defineSchema)
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
const makeProto = ({ tables, convexSchemaDefinition }) => Object.assign(Object.create(Proto), {
|
|
27
|
-
tables,
|
|
28
|
-
convexSchemaDefinition
|
|
29
|
-
});
|
|
30
12
|
/**
|
|
31
|
-
*
|
|
13
|
+
* Construct a `DatabaseSchema` from a record of bound `Table`s. The empty
|
|
14
|
+
* case is `DatabaseSchema.make({})`. The `Tables_` union is inferred from
|
|
15
|
+
* the value record's values, so codegen-emitted calls of the form
|
|
16
|
+
* `DatabaseSchema.make({ notes, tags, users })` do not need an explicit
|
|
17
|
+
* type argument.
|
|
18
|
+
*
|
|
19
|
+
* Invariant: each record **key must equal its value's `tableName`**. The
|
|
20
|
+
* record is stored verbatim and later read by key (`databaseSchema.tables[
|
|
21
|
+
* tableName]` in `DatabaseReader`/`DatabaseWriter`), so a key that diverges
|
|
22
|
+
* from the bound table's name would make those lookups silently miss. The
|
|
23
|
+
* type signature does not enforce this — codegen upholds it by deriving both
|
|
24
|
+
* the key and the table name from the same filename (and the shorthand
|
|
25
|
+
* `{ notes, tags, users }` form it emits makes them identical by
|
|
26
|
+
* construction). Hand-written calls must preserve it.
|
|
32
27
|
*/
|
|
33
|
-
const make = () =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
37
|
-
const systemSchema = make().addTable(scheduledFunctionsTable).addTable(storageTable);
|
|
38
|
-
const extendWithSystemTables = (tables) => ({
|
|
39
|
-
...tables,
|
|
40
|
-
...systemTables
|
|
28
|
+
const make = (tables) => ({
|
|
29
|
+
[TypeId]: TypeId,
|
|
30
|
+
tables
|
|
41
31
|
});
|
|
42
32
|
|
|
43
33
|
//#endregion
|
|
44
|
-
export { DatabaseSchema_exports, TypeId,
|
|
34
|
+
export { DatabaseSchema_exports, TypeId, isDatabaseSchema, make };
|
|
45
35
|
//# sourceMappingURL=DatabaseSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseSchema.js","names":[
|
|
1
|
+
{"version":3,"file":"DatabaseSchema.js","names":[],"sources":["../src/DatabaseSchema.ts"],"sourcesContent":["import * as Predicate from \"effect/Predicate\";\nimport type * as Table from \"./Table\";\n\nexport const TypeId = \"@confect/server/DatabaseSchema\";\nexport type TypeId = typeof TypeId;\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport const isDatabaseSchema = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId);\n\n/**\n * A schema definition holding a record of bound `Table`s keyed by table\n * name. Codegen emits a single static `DatabaseSchema.make({ ... })` call;\n * laziness lives entirely on each `Table` (its `Fields`, `Doc`, and\n * `tableDefinition` are lazy memoised getters), so this layer is a plain\n * record indirection with no module-loading or async machinery.\n */\nexport interface DatabaseSchema<Tables_ extends Table.AnyWithProps = never> {\n readonly [TypeId]: TypeId;\n readonly tables: {\n readonly [TableName in Table.Name<Tables_>]: Table.WithName<\n Tables_,\n TableName\n >;\n };\n}\n\nexport interface AnyWithProps {\n readonly [TypeId]: TypeId;\n readonly tables: Record<string, Table.AnyWithProps>;\n}\n\nexport type Tables<DatabaseSchema_ extends AnyWithProps> =\n DatabaseSchema_ extends DatabaseSchema<infer Tables_> ? Tables_ : never;\n\nexport type TableNames<DatabaseSchema_ extends AnyWithProps> = Table.Name<\n Tables<DatabaseSchema_>\n> &\n string;\n\nexport type TableWithName<\n DatabaseSchema_ extends AnyWithProps,\n TableName extends TableNames<DatabaseSchema_>,\n> = Extract<Tables<DatabaseSchema_>, { readonly tableName: TableName }>;\n\n/**\n * Construct a `DatabaseSchema` from a record of bound `Table`s. The empty\n * case is `DatabaseSchema.make({})`. The `Tables_` union is inferred from\n * the value record's values, so codegen-emitted calls of the form\n * `DatabaseSchema.make({ notes, tags, users })` do not need an explicit\n * type argument.\n *\n * Invariant: each record **key must equal its value's `tableName`**. The\n * record is stored verbatim and later read by key (`databaseSchema.tables[\n * tableName]` in `DatabaseReader`/`DatabaseWriter`), so a key that diverges\n * from the bound table's name would make those lookups silently miss. The\n * type signature does not enforce this — codegen upholds it by deriving both\n * the key and the table name from the same filename (and the shorthand\n * `{ notes, tags, users }` form it emits makes them identical by\n * construction). Hand-written calls must preserve it.\n */\nexport const make = <\n const TablesRecord extends Record<string, Table.AnyWithProps>,\n>(\n tables: TablesRecord,\n): DatabaseSchema<TablesRecord[keyof TablesRecord]> => ({\n [TypeId]: TypeId,\n tables: tables as unknown as DatabaseSchema<\n TablesRecord[keyof TablesRecord]\n >[\"tables\"],\n});\n"],"mappings":";;;;;;;;;AAGA,MAAa,SAAS;AAOtB,MAAa,oBAAoB,MAC/B,UAAU,YAAY,GAAG,OAAO;;;;;;;;;;;;;;;;;AAqDlC,MAAa,QAGX,YACsD;EACrD,SAAS;CACF;CAGT"}
|
package/dist/DatabaseWriter.d.ts
CHANGED
|
@@ -1,47 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
19
|
-
};
|
|
1
|
+
import type { BetterOmit, Expand, GenericDatabaseWriter, WithoutSystemFields } from "convex/server";
|
|
2
|
+
import type { GenericId } from "convex/values";
|
|
3
|
+
import * as Context from "effect/Context";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
import type * as DatabaseSchema from "./DatabaseSchema";
|
|
7
|
+
import type * as DataModel from "./DataModel";
|
|
8
|
+
import type { DocumentByName as DocumentByName_ } from "./DataModel";
|
|
9
|
+
import * as Document from "./Document";
|
|
10
|
+
import * as QueryInitializer from "./QueryInitializer";
|
|
11
|
+
export declare const make: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>>) => {
|
|
12
|
+
table: <const TableName extends DataModel.TableNames<DataModel.FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
|
|
13
|
+
insert: (document: Document.WithoutSystemFields<DocumentByName_<DataModel.FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, Document.DocumentEncodeError, never>;
|
|
14
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<WithoutSystemFields<DocumentByName_<DataModel.FromSchema<DatabaseSchema_>, TableName>>>) => Effect.Effect<void, Document.DocumentDecodeError | Document.DocumentEncodeError | QueryInitializer.GetByIdFailure, never>;
|
|
15
|
+
replace: (id: GenericId<TableName>, value: WithoutSystemFields<DocumentByName_<DataModel.FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<void, Document.DocumentEncodeError, never>;
|
|
16
|
+
delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
17
|
+
};
|
|
20
18
|
};
|
|
21
|
-
declare const DatabaseWriter: <DatabaseSchema_ extends AnyWithProps>() => Context.Tag<{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
export declare const DatabaseWriter: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>() => Context.Tag<{
|
|
20
|
+
table: <const TableName extends DataModel.TableNames<DataModel.FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
|
|
21
|
+
insert: (document: Document.WithoutSystemFields<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, Document.DocumentEncodeError, never>;
|
|
22
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>>) => Effect.Effect<void, Document.DocumentDecodeError | Document.DocumentEncodeError | QueryInitializer.GetByIdFailure, never>;
|
|
23
|
+
replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>) => Effect.Effect<void, Document.DocumentEncodeError, never>;
|
|
24
|
+
delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
25
|
+
};
|
|
28
26
|
}, {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
table: <const TableName extends DataModel.TableNames<DataModel.FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
|
|
28
|
+
insert: (document: Document.WithoutSystemFields<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, Document.DocumentEncodeError, never>;
|
|
29
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>>) => Effect.Effect<void, Document.DocumentDecodeError | Document.DocumentEncodeError | QueryInitializer.GetByIdFailure, never>;
|
|
30
|
+
replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>) => Effect.Effect<void, Document.DocumentEncodeError, never>;
|
|
31
|
+
delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
32
|
+
};
|
|
35
33
|
}>;
|
|
36
|
-
type DatabaseWriter<DatabaseSchema_ extends AnyWithProps> = ReturnType<typeof DatabaseWriter<DatabaseSchema_>>["Identifier"];
|
|
37
|
-
declare const layer: <DatabaseSchema_ extends AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter<ToConvex<FromSchema<DatabaseSchema_>>>) => Layer.Layer<{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
export type DatabaseWriter<DatabaseSchema_ extends DatabaseSchema.AnyWithProps> = ReturnType<typeof DatabaseWriter<DatabaseSchema_>>["Identifier"];
|
|
35
|
+
export declare const layer: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(databaseSchema: DatabaseSchema_, convexDatabaseWriter: GenericDatabaseWriter<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>>) => Layer.Layer<{
|
|
36
|
+
table: <const TableName extends DataModel.TableNames<DataModel.FromSchema<DatabaseSchema_>>>(tableName: TableName) => {
|
|
37
|
+
insert: (document: Document.WithoutSystemFields<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>>) => Effect.Effect<GenericId<TableName>, Document.DocumentEncodeError, never>;
|
|
38
|
+
patch: (id: GenericId<TableName>, patchedValues: Partial<Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>>) => Effect.Effect<void, Document.DocumentDecodeError | Document.DocumentEncodeError | QueryInitializer.GetByIdFailure, never>;
|
|
39
|
+
replace: (id: GenericId<TableName>, value: Expand<BetterOmit<DataModel.DocumentByName<DataModel.FromSchema<DatabaseSchema_>, TableName>, "_creationTime" | "_id">>) => Effect.Effect<void, Document.DocumentEncodeError, never>;
|
|
40
|
+
delete: (id: GenericId<TableName>) => Effect.Effect<void, never, never>;
|
|
41
|
+
};
|
|
44
42
|
}, never, never>;
|
|
45
|
-
//#endregion
|
|
46
|
-
export { DatabaseWriter, DatabaseWriter_d_exports, layer, make };
|
|
47
43
|
//# sourceMappingURL=DatabaseWriter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseWriter.d.ts","
|
|
1
|
+
{"version":3,"file":"DatabaseWriter.d.ts","sourceRoot":"","sources":["../src/DatabaseWriter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,KAAK,SAAS,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAIvD,eAAO,MAAM,IAAI,GAAI,eAAe,SAAS,cAAc,CAAC,YAAY,EACtE,gBAAgB,eAAe,EAC/B,sBAAsB,qBAAqB,CACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAC1D;kBAIoB,SAAS,SAAS,SAAS,CAAC,UAAU,uCAAY,aAC1D,SAAS;2BAQR,QAAQ,CAAC,mBAAmB,CACpC,eAAe,wCAAa,SAAS,CAAC,CACvC;oBAsBG,SAAS,CAAC,SAAS,CAAC,iBACT,OAAO,CACpB,mBAAmB,CAAC,eAAe,wCAAa,SAAS,CAAC,CAAC,CAC5D;sBAqCG,SAAS,CAAC,SAAS,CAAC,SACjB,mBAAmB,CAAC,eAAe,wCAAa,SAAS,CAAC,CAAC;qBAsB/C,SAAS,CAAC,SAAS,CAAC;;CAc5C,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,eAAe,SAAS,cAAc,CAAC,YAAY;kBAjH9B,SAAS;;;;;;;kBAAT,SAAS;;;;;;EAqH7B,CAAC;AAEJ,MAAM,MAAM,cAAc,CACxB,eAAe,SAAS,cAAc,CAAC,YAAY,IACjD,UAAU,CAAC,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAErE,eAAO,MAAM,KAAK,GAAI,eAAe,SAAS,cAAc,CAAC,YAAY,EACvE,gBAAgB,eAAe,EAC/B,sBAAsB,qBAAqB,CACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAC1D;kBA/HoB,SAAS;;;;;;gBAoI7B,CAAC"}
|
package/dist/DatabaseWriter.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { encode } from "./Document.js";
|
|
3
3
|
import { getById } from "./QueryInitializer.js";
|
|
4
|
-
import
|
|
4
|
+
import * as Context from "effect/Context";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
import { pipe } from "effect/Function";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Record from "effect/Record";
|
|
5
9
|
|
|
6
10
|
//#region src/DatabaseWriter.ts
|
|
7
11
|
var DatabaseWriter_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -10,21 +14,20 @@ var DatabaseWriter_exports = /* @__PURE__ */ __exportAll({
|
|
|
10
14
|
make: () => make
|
|
11
15
|
});
|
|
12
16
|
const make = (databaseSchema, convexDatabaseWriter) => {
|
|
13
|
-
const tables = databaseSchema.tables;
|
|
14
17
|
const table = (tableName) => {
|
|
15
|
-
const tableDef = tables[tableName];
|
|
16
|
-
const tableSchema = tableDef.Fields;
|
|
18
|
+
const tableDef = databaseSchema.tables[tableName];
|
|
17
19
|
const insert = (document) => Effect.gen(function* () {
|
|
18
20
|
const encodedDocument = yield* encode(document, tableName, tableDef.Fields);
|
|
19
21
|
return yield* Effect.promise(() => convexDatabaseWriter.insert(tableName, encodedDocument));
|
|
20
22
|
});
|
|
21
23
|
const patch = (id, patchedValues) => Effect.gen(function* () {
|
|
24
|
+
const tableSchema = tableDef.Fields;
|
|
22
25
|
const originalDecodedDoc = yield* getById(tableName, convexDatabaseWriter, tableDef)(id);
|
|
23
26
|
const updatedEncodedDoc = yield* pipe(patchedValues, Record.reduce(originalDecodedDoc, (acc, value, key) => value === void 0 ? Record.remove(acc, key) : Record.set(acc, key, value)), encode(tableName, tableSchema));
|
|
24
27
|
yield* Effect.promise(() => convexDatabaseWriter.replace(id, updatedEncodedDoc));
|
|
25
28
|
});
|
|
26
29
|
const replace = (id, value) => Effect.gen(function* () {
|
|
27
|
-
const updatedEncodedDoc = yield* encode(value, tableName,
|
|
30
|
+
const updatedEncodedDoc = yield* encode(value, tableName, tableDef.Fields);
|
|
28
31
|
yield* Effect.promise(() => convexDatabaseWriter.replace(id, updatedEncodedDoc));
|
|
29
32
|
});
|
|
30
33
|
const delete_ = (id) => Effect.promise(() => convexDatabaseWriter.delete(id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseWriter.js","names":["Document.encode","QueryInitializer.getById"],"sources":["../src/DatabaseWriter.ts"],"sourcesContent":["import type {\n BetterOmit,\n DocumentByName,\n Expand,\n GenericDatabaseWriter,\n WithoutSystemFields,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Context
|
|
1
|
+
{"version":3,"file":"DatabaseWriter.js","names":["Document.encode","QueryInitializer.getById"],"sources":["../src/DatabaseWriter.ts"],"sourcesContent":["import type {\n BetterOmit,\n DocumentByName,\n Expand,\n GenericDatabaseWriter,\n WithoutSystemFields,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Record from \"effect/Record\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport type * as DataModel from \"./DataModel\";\nimport type { DocumentByName as DocumentByName_ } from \"./DataModel\";\nimport * as Document from \"./Document\";\nimport * as QueryInitializer from \"./QueryInitializer\";\nimport type * as Table from \"./Table\";\nimport type * as TableInfo from \"./TableInfo\";\n\nexport const make = <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(\n databaseSchema: DatabaseSchema_,\n convexDatabaseWriter: GenericDatabaseWriter<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) => {\n type DataModel_ = DataModel.FromSchema<DatabaseSchema_>;\n\n const table = <const TableName extends DataModel.TableNames<DataModel_>>(\n tableName: TableName,\n ) => {\n const tableDef = databaseSchema.tables[tableName] as Table.WithName<\n DatabaseSchema.Tables<DatabaseSchema_>,\n TableName\n >;\n\n const insert = (\n document: Document.WithoutSystemFields<\n DocumentByName_<DataModel_, TableName>\n >,\n ) =>\n Effect.gen(function* () {\n const encodedDocument = yield* Document.encode(\n document,\n tableName,\n tableDef.Fields,\n );\n\n const id = yield* Effect.promise(() =>\n convexDatabaseWriter.insert(\n tableName,\n encodedDocument as WithoutSystemFields<\n DocumentByName<DataModel.ToConvex<DataModel_>, TableName>\n >,\n ),\n );\n\n return id;\n });\n\n const patch = (\n id: GenericId<TableName>,\n patchedValues: Partial<\n WithoutSystemFields<DocumentByName_<DataModel_, TableName>>\n >,\n ) =>\n Effect.gen(function* () {\n const tableSchema = tableDef.Fields as TableInfo.TableSchema<\n DataModel.TableInfoWithName_<DataModel_, TableName>\n >;\n\n const originalDecodedDoc = yield* QueryInitializer.getById(\n tableName,\n convexDatabaseWriter as any,\n tableDef,\n )(id);\n\n const updatedEncodedDoc = yield* pipe(\n patchedValues,\n Record.reduce(originalDecodedDoc, (acc, value, key) =>\n value === undefined\n ? Record.remove(acc, key)\n : Record.set(acc, key, value),\n ),\n Document.encode(tableName, tableSchema),\n );\n\n yield* Effect.promise(() =>\n convexDatabaseWriter.replace(\n id,\n updatedEncodedDoc as Expand<\n BetterOmit<\n DocumentByName<DataModel.ToConvex<DataModel_>, TableName>,\n \"_creationTime\" | \"_id\"\n >\n >,\n ),\n );\n });\n\n const replace = (\n id: GenericId<TableName>,\n value: WithoutSystemFields<DocumentByName_<DataModel_, TableName>>,\n ) =>\n Effect.gen(function* () {\n const updatedEncodedDoc = yield* Document.encode(\n value,\n tableName,\n tableDef.Fields,\n );\n\n yield* Effect.promise(() =>\n convexDatabaseWriter.replace(\n id,\n updatedEncodedDoc as Expand<\n BetterOmit<\n DocumentByName<DataModel.ToConvex<DataModel_>, TableName>,\n \"_creationTime\" | \"_id\"\n >\n >,\n ),\n );\n });\n\n const delete_ = (id: GenericId<TableName>) =>\n Effect.promise(() => convexDatabaseWriter.delete(id));\n\n return {\n insert,\n patch,\n replace,\n delete: delete_,\n };\n };\n\n return {\n table,\n };\n};\n\nexport const DatabaseWriter = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n>() =>\n Context.GenericTag<ReturnType<typeof make<DatabaseSchema_>>>(\n \"@confect/server/DatabaseWriter\",\n );\n\nexport type DatabaseWriter<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n> = ReturnType<typeof DatabaseWriter<DatabaseSchema_>>[\"Identifier\"];\n\nexport const layer = <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(\n databaseSchema: DatabaseSchema_,\n convexDatabaseWriter: GenericDatabaseWriter<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n) =>\n Layer.succeed(\n DatabaseWriter<DatabaseSchema_>(),\n make(databaseSchema, convexDatabaseWriter),\n );\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,MAAa,QACX,gBACA,yBAGG;CAGH,MAAM,SACJ,cACG;EACH,MAAM,WAAW,eAAe,OAAO;EAKvC,MAAM,UACJ,aAIA,OAAO,IAAI,aAAa;GACtB,MAAM,kBAAkB,OAAOA,OAC7B,UACA,WACA,SAAS,OACV;AAWD,UATW,OAAO,OAAO,cACvB,qBAAqB,OACnB,WACA,gBAGD,CACF;IAGD;EAEJ,MAAM,SACJ,IACA,kBAIA,OAAO,IAAI,aAAa;GACtB,MAAM,cAAc,SAAS;GAI7B,MAAM,qBAAqB,OAAOC,QAChC,WACA,sBACA,SACD,CAAC,GAAG;GAEL,MAAM,oBAAoB,OAAO,KAC/B,eACA,OAAO,OAAO,qBAAqB,KAAK,OAAO,QAC7C,UAAU,SACN,OAAO,OAAO,KAAK,IAAI,GACvB,OAAO,IAAI,KAAK,KAAK,MAAM,CAChC,EACDD,OAAgB,WAAW,YAAY,CACxC;AAED,UAAO,OAAO,cACZ,qBAAqB,QACnB,IACA,kBAMD,CACF;IACD;EAEJ,MAAM,WACJ,IACA,UAEA,OAAO,IAAI,aAAa;GACtB,MAAM,oBAAoB,OAAOA,OAC/B,OACA,WACA,SAAS,OACV;AAED,UAAO,OAAO,cACZ,qBAAqB,QACnB,IACA,kBAMD,CACF;IACD;EAEJ,MAAM,WAAW,OACf,OAAO,cAAc,qBAAqB,OAAO,GAAG,CAAC;AAEvD,SAAO;GACL;GACA;GACA;GACA,QAAQ;GACT;;AAGH,QAAO,EACL,OACD;;AAGH,MAAa,uBAGX,QAAQ,WACN,iCACD;AAMH,MAAa,SACX,gBACA,yBAIA,MAAM,QACJ,gBAAiC,EACjC,KAAK,gBAAgB,qBAAqB,CAC3C"}
|