Create Metagraph Type.Module with Config, BaseNode, BaseEdge entries
Add src/graphs/modules/metagraph.ts exporting Metagraph as Type.Module() with Config (Union defaults for type, Boolean defaults for multi/allowSelfLoops), BaseNode (optional created/modified/metadata with Type.Unknown()), and BaseEdge (type string, optional metadata with Type.Unknown()). Also export GRAPH_STATUS const and GraphStatus TypeBox schema for sqlite host usage. Update mod.ts to re-export from modules/metagraph.ts.
This commit is contained in:
@@ -1,2 +1,7 @@
|
|||||||
export * from "./types.ts";
|
export * from "./types.ts";
|
||||||
export * from "./schemaBuilder.ts";
|
export * from "./schemaBuilder.ts";
|
||||||
|
export {
|
||||||
|
Metagraph,
|
||||||
|
GRAPH_STATUS,
|
||||||
|
GraphStatus,
|
||||||
|
} from "./modules/metagraph.ts";
|
||||||
37
src/graphs/modules/metagraph.ts
Normal file
37
src/graphs/modules/metagraph.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { Type } from "@alkdev/typebox";
|
||||||
|
|
||||||
|
export const Metagraph = Type.Module({
|
||||||
|
Config: Type.Object({
|
||||||
|
type: Type.Union([
|
||||||
|
Type.Literal("directed"),
|
||||||
|
Type.Literal("undirected"),
|
||||||
|
Type.Literal("mixed"),
|
||||||
|
], { default: "mixed" }),
|
||||||
|
multi: Type.Boolean({ default: true }),
|
||||||
|
allowSelfLoops: Type.Boolean({ default: true }),
|
||||||
|
}),
|
||||||
|
|
||||||
|
BaseNode: Type.Object({
|
||||||
|
created: Type.Optional(Type.String({ format: "date-time" })),
|
||||||
|
modified: Type.Optional(Type.String({ format: "date-time" })),
|
||||||
|
metadata: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
|
||||||
|
}),
|
||||||
|
|
||||||
|
BaseEdge: Type.Object({
|
||||||
|
type: Type.String(),
|
||||||
|
metadata: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const GRAPH_STATUS = {
|
||||||
|
Active: "active",
|
||||||
|
Archived: "archived",
|
||||||
|
Draft: "draft",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type GraphStatus = (typeof GRAPH_STATUS)[keyof typeof GRAPH_STATUS];
|
||||||
|
export const GraphStatus = Type.Union([
|
||||||
|
Type.Literal(GRAPH_STATUS.Active),
|
||||||
|
Type.Literal(GRAPH_STATUS.Archived),
|
||||||
|
Type.Literal(GRAPH_STATUS.Draft),
|
||||||
|
]);
|
||||||
Reference in New Issue
Block a user