Create table schema.

Supported types are null, string, number, Uint8Array, JSON Object, and JSON Array. Use SqliteDate for dates and SqliteBoolean for booleans.

Reserved columns are createdAt, updatedAt, isDeleted. Those columns are added by default.

const TodoId = id("Todo");
type TodoId = typeof TodoId.Type;

const TodoTable = table({
id: TodoId,
title: NonEmptyString1000,
isCompleted: S.nullable(SqliteBoolean),
});
type TodoTable = typeof TodoTable.Type;
  • Type Parameters

    • Fields extends TableFields

    Parameters

    Returns ValidateFieldsTypes<Fields> extends true
        ? ValidateFieldsNames<Fields> extends true
            ? ValidateFieldsHasId<Fields> extends true
                ? Schema<Simplify<Type<Fields> & {
                    createdAt: string & Brand<"SqliteDate">;
                    isDeleted: (0 | 1) & Brand<"SqliteBoolean">;
                    updatedAt: string & Brand<"SqliteDate">;
                }>, Simplify<{
                    readonly [K in string | number | symbol as Key<Fields, K>]: Encoded<Fields[K]>
                } & {
                    readonly [K in string | number | symbol as Key<Fields, K>]?: Encoded<Fields[K]>
                } & {
                    createdAt: string;
                    isDeleted: number;
                    updatedAt: string;
                }>, never>
                : EvoluTypeError<"table() called without id column.">
            : EvoluTypeError<"table() called with a reserved column. Reserved columns are createdAt, updatedAt, isDeleted. Those columns are added by default.">
        : EvoluTypeError<"table() called with unsupported type. Supported types are null, string, number, Uint8Array, JSON Object, and JSON Array. Use SqliteDate for dates and SqliteBoolean for booleans.">