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

Function variantSchema

packages/core/fumadb/src/schema/create.ts:864–899  ·  view source on GitHub ↗
(
  variant: Variant,
  originalSchema: Schema<Version, Tables>,
  override: {
    tables: $Tables;
    relations?: RM;
  }
)

Source from the content-addressed store, hash-verified

862 * 4. when replacing tables, its original relations will be removed.
863 */
864export function variantSchema<
865 Variant extends string,
866 Version extends string,
867 Tables extends Record<string, AnyTable>,
868 $Tables extends Record<string, AnyTable>,
869 RM extends RelationsMap<OverrideTables<Tables, $Tables>>,
870>(
871 variant: Variant,
872 originalSchema: Schema<Version, Tables>,
873 override: {
874 tables: $Tables;
875 relations?: RM;
876 }
877): Schema<
878 `${Version}-${Variant}`,
879 CreateSchemaTables<OverrideTables<Tables, $Tables>, RM>
880> {
881 const cloned = originalSchema.clone();
882 const tables = cloned.tables as Record<string, AnyTable>;
883
884 for (const [k, v] of Object.entries(override.tables)) {
885 if (v == null) continue;
886 tables[k] = v;
887 }
888
889 if (override.relations)
890 setRelations(tables as OverrideTables<Tables, $Tables>, override.relations);
891
892 // TODO: support custom `up` and `down` for variant schema
893 // TODO: support disabling relations
894 return schema({
895 version: `${originalSchema.version}-${variant}`,
896 tables: tables as OverrideTables<Tables, $Tables>,
897 relations: override.relations,
898 });
899}
900
901function nameVariants(
902 rawName: string,

Callers 2

cli.tsFile · 0.90
variants.schema.tsFile · 0.90

Calls 3

setRelationsFunction · 0.85
schemaFunction · 0.85
cloneMethod · 0.65

Tested by

no test coverage detected