@patchworkdev/pdk
Version:
Patchwork Development Kit
53 lines • 1.81 kB
TypeScript
export declare function onchainTable(tableName: string, tableDefinition: (t: TableBuilder) => Record<string, ChainableTableFieldDefinition>): any;
export declare function relations(table: any, relationDefinition: (builders: RelationBuilder) => Record<string, Relation>): {
type: "relations";
_tableName: any;
readonly _relations: Record<string, Relation>;
};
type FieldType = 'bigint' | 'int' | 'hex' | 'boolean' | 'string' | 'many' | 'one';
export type FieldDefinition = {
type: FieldType;
primaryKey?: boolean;
reference?: string;
isOptional?: boolean;
relatedModel?: string;
joinField?: string;
};
type ChainableTableFieldDefinition = {
notNull: () => ChainableTableFieldDefinition;
primaryKey: () => ChainableTableFieldDefinition;
_build: () => FieldDefinition;
};
interface TableBuilder {
text: () => ChainableTableFieldDefinition;
hex: () => ChainableTableFieldDefinition;
bigint: () => ChainableTableFieldDefinition;
integer: () => ChainableTableFieldDefinition;
}
type Relation = {
fields: any[];
references?: any[];
relationName?: string;
relatedTable: any;
type: 'one' | 'many';
};
type RelationBuilder = {
one: (relatedTable: any, config: Omit<Relation, 'type' | 'relatedTable'>) => Relation;
many: (relatedTable: any, config?: Partial<Omit<Relation, 'type' | 'relatedTable'>>) => Relation;
};
export type TableDefinition = {
type: 'table';
_tableName: string;
_columns: string[];
_schema: Record<string, FieldDefinition>;
};
export type TableRelations = {
type: 'relations';
_tableName: string;
_relations: Record<string, Relation>;
};
export type SchemaModule = {
[K in string]: TableDefinition | TableRelations;
};
export {};
//# sourceMappingURL=ponderSchemaMock.d.ts.map