Add ColumnOf definitions

This commit is contained in:
Endeavorance 2025-04-06 17:08:35 -04:00
parent 59de642d31
commit 09d25c926c
4 changed files with 620 additions and 492 deletions

View file

@ -1,6 +1,6 @@
{
"name": "@endeavorance/prequel",
"version": "1.2.0",
"version": "1.4.0",
"exports": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
@ -10,7 +10,9 @@
"keywords": [],
"author": "Endeavorance <hello@endeavorance.camp> (https://endeavorance.camp)",
"license": "CC BY-NC-SA 4.0",
"files": ["dist"],
"files": [
"dist"
],
"type": "module",
"devDependencies": {
"@types/bun": "latest",

115
src/column-types.ts Normal file
View file

@ -0,0 +1,115 @@
import type { ColumnShorthand } from "./columns";
import type { Table } from "./table";
export const ColumnOf = {
PrimaryKey: {
type: "INTEGER",
primary: true,
autoincrement: true,
},
Text: {
type: "TEXT",
nullable: false,
},
Int: {
type: "INTEGER",
nullable: false,
},
Real: {
type: "REAL",
nullable: false,
},
ForeignKey(otherTable: Table<unknown>, cascade = false): ColumnShorthand {
return {
type: otherTable.primaryColumnType(),
references: otherTable.reference(),
nullable: false,
cascade
};
},
Nullable: {
Text: {
type: "TEXT",
nullable: true,
},
Int: {
type: "INTEGER",
nullable: true,
},
Real: {
type: "REAL",
nullable: true,
},
ForeignKey(otherTable: Table<unknown>, cascade = false): ColumnShorthand {
return {
type: otherTable.primaryColumnType(),
references: otherTable.reference(),
nullable: true,
cascade,
};
},
},
Unique: {
Text: {
type: "TEXT",
nullable: false,
unique: true,
},
Int: {
type: "INTEGER",
nullable: false,
unique: true,
},
Real: {
type: "REAL",
nullable: false,
unique: true,
},
ForeignKey(otherTable: Table<unknown>, cascade = false): ColumnShorthand {
return {
type: otherTable.primaryColumnType(),
references: otherTable.reference(),
nullable: false,
unique: true,
cascade,
};
},
},
Defaulted: {
Text(defaultValue: string): ColumnShorthand {
return {
type: "TEXT",
default: defaultValue,
}
},
Int(defaultValue: number): ColumnShorthand {
return {
type: "INTEGER",
default: defaultValue,
} as const;
},
Real(defaultValue: number): ColumnShorthand {
return {
type: "REAL",
default: defaultValue,
} as const;
}
},
} as const;

View file

@ -1,5 +1,6 @@
import type { Column, ColumnShorthand, DataType } from "./columns";
import { Prequel } from "./prequel";
import { Table } from "./table";
import { ColumnOf } from "./column-types";
export { Prequel, Table, type DataType, type Column, type ColumnShorthand };
export { Prequel, Table, ColumnOf, type DataType, type Column, type ColumnShorthand };

File diff suppressed because it is too large Load diff