diff --git a/src/__cms/dao/db.ts b/src/__cms/dao/db.ts index 6009665..8039583 100644 --- a/src/__cms/dao/db.ts +++ b/src/__cms/dao/db.ts @@ -41,7 +41,7 @@ export function get_paths(): string[] { export function create( collection_name: C, data: CollectionInput -): Collection { +): Collection | unknown { return pipe( get_collection_schema(collection_name), Effect.flatMap((schema) => @@ -50,6 +50,13 @@ export function create( catch: () => new Error(`Invalid data: ${JSON.stringify(data, null, 2)}`) }) ), + Effect.match({ + onFailure: (e) => { + console.log(e); + return data; + }, + onSuccess: (a) => a + }), Effect.runSync ); } diff --git a/src/__cms/fields.ts b/src/__cms/fields.ts index 68fba45..083b51f 100644 --- a/src/__cms/fields.ts +++ b/src/__cms/fields.ts @@ -61,13 +61,13 @@ export const File = () => T.String({}); type Relation = (typeof database_index_schema)['properties'][C]; -export function BaseRelation(collection_name: C): Relation { +function BaseRelation(collection_name: C): Relation { const collection_entries = database_index[collection_name]; // @ts-expect-error - Avoid type overlap return T.Union(collection_entries.map((name: CollectionEntry) => T.Literal(name))); } -export function Relation(collection_name: C) { +export const Relation = (collection_name: C) => { return T.Transform(BaseRelation(collection_name)) .Decode((document) => ({ collection: collection_name, @@ -75,6 +75,6 @@ export function Relation(collection_name: C) { get: () => get_document(collection_name, document) })) .Encode((field) => field.document); -} +}; export type RelationField = StaticDecode>>; diff --git a/src/__cms/index.ts b/src/__cms/index.ts index 33b8696..0850366 100644 --- a/src/__cms/index.ts +++ b/src/__cms/index.ts @@ -1,2 +1,3 @@ export { database } from './database'; export { get_collection, get_document, get_paths, create } from './dao/db'; +export * as P from './fields'; diff --git a/src/routes/(database)/config.ts b/src/routes/(database)/config.ts index 8709220..5a81f94 100644 --- a/src/routes/(database)/config.ts +++ b/src/routes/(database)/config.ts @@ -1,5 +1,4 @@ -import * as F from '$cms/fields'; // eslint-disable-line -import { database } from '$cms'; +import { database, P } from '$cms'; // eslint-disable-line /* --- */ diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e2e48a0..bcdc347 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,4 +1,5 @@ Home page