MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / table

Function table

packages/core/fumadb/src/schema/create.ts:570–674  ·  view source on GitHub ↗
(
  name: string | Partial<NameVariants>,
  columns: Columns
)

Source from the content-addressed store, hash-verified

568}
569
570export function table<Columns extends Record<string, AnyColumn>>(
571 name: string | Partial<NameVariants>,
572 columns: Columns
573): Table<Columns, {}> {
574 let idCol: AnyColumn | undefined;
575 let names: NameVariants | undefined;
576
577 const uniqueConstraints: UniqueConstraint[] = [];
578 const policies: StoredTablePolicy[] = [];
579 const out: Table<Columns, {}> = {
580 ormName: "",
581 get names() {
582 if (names) return names;
583
584 return typeof name === "string"
585 ? nameVariants(name, out.ormName)
586 : nameVariants(out.ormName, out.ormName, name);
587 },
588 set names(v) {
589 names = v;
590 },
591 columns,
592 relations: {},
593 foreignKeys: [],
594 policies,
595 getUniqueConstraints(level = "all") {
596 const result: UniqueConstraint[] = [];
597 if (level === "all" || level === "table")
598 result.push(...uniqueConstraints);
599
600 if (level === "all" || level === "column") {
601 for (const col of Object.values(this.columns)) {
602 if (!col.isUnique) continue;
603
604 result.push({
605 name: col.getUniqueConstraintName(),
606 columns: [col],
607 });
608 }
609 }
610
611 return result;
612 },
613 getColumnByName(name, type = "sql") {
614 return Object.values(this.columns).find((c) => c.names[type] === name);
615 },
616 getIdColumn() {
617 return idCol!;
618 },
619 unique(name, columns) {
620 uniqueConstraints.push({
621 name,
622 columns: columns.map((name) => {
623 const column = this.columns[name];
624 if (!column)
625 throw new Error(`Unknown column name ${name.toString()}`);
626
627 return column;

Callers 15

unscopedExecutorTableFunction · 0.90
tenantExecutorTableFunction · 0.90
ownedExecutorTableFunction · 0.90
uuid.test.tsFile · 0.90
generate.test.tsFile · 0.90
migrate.test.tsFile · 0.90
cli.tsFile · 0.90
variants.schema.tsFile · 0.90
query.schema.tsFile · 0.90
generateSchemaFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected