@hatchifyjs/core
provides core libraries and types for defining Schemas. Schemas are used by other packages like @hatchifyjs/koa and @hatchifyjs/react to provide low-code-like functionality.
The following defines a SalesPerson
schema that has multiple attributes (aka fields) and relationships with other schemas:
import { PartialSchema, boolean, datetime, dateonly, integer, string, enumerate belongsTo, hasMany, hasOne } from "@hatchifyjs/core" export const SalesPerson = { name: "SalesPerson", pluralName: "SalesPeople", id: uuid({required: true, autoIncrement: true}), attributes: { name: string({ required: true }), description: text(), hireDate: datetime(), birthday: dateonly(), commission: number({min: 0}), importance: integer({min: 0, max: 100, step: 10}), isSenior: boolean({ default: false }), status: enumerate({ values: ["active", "inactive"] }), salesGroupId: uuid(), }, relationships: { salesGroup: belongsTo(), accounts: hasMany(), todos: hasMany().through() user: hasOne() }, } satisfies PartialSchema
To learn how to define a schema, we suggest reading:
- PartialSchema - To understand how to define a schema and how it effects the database, API, and UI.
- Attributes - How to specify attributes on a schema.
- Relationships - How to specify relationships on a schema.
@hatchifyjs/core
exports the following types and methods to help you build a schema:
Types:
PartialSchema
- Defines the shape of a schema for one type
Attributes:
Relationships: