- Add DockerOrchestrator implementation with container management - Refactor InMemoryOrchestrator to use RhizomeNode directly - Fix orchestrated test files for single and two-node scenarios - Update package.json with dockerode dependency - Clean up old test files and imports
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { SchemaBuilder } from '../src/schema';
|
|
|
|
/**
|
|
* Common schemas used for testing purposes.
|
|
* These schemas are not part of the main application code
|
|
* and are only used in test files.
|
|
*/
|
|
export const CommonSchemas = {
|
|
// User schema with friends references
|
|
User: () => SchemaBuilder
|
|
.create('user')
|
|
.name('User')
|
|
.description('A user entity with profile information')
|
|
.property('name', { type: 'primitive', primitiveType: 'string', required: true })
|
|
.property('email', { type: 'primitive', primitiveType: 'string' })
|
|
.property('age', { type: 'primitive', primitiveType: 'number' })
|
|
.property('active', { type: 'primitive', primitiveType: 'boolean' })
|
|
.property('friends', {
|
|
type: 'array',
|
|
itemSchema: {
|
|
type: 'reference',
|
|
targetSchema: 'user-summary',
|
|
maxDepth: 2
|
|
}
|
|
})
|
|
.required('name')
|
|
.build(),
|
|
|
|
// User summary schema for references to prevent infinite recursion
|
|
UserSummary: () => SchemaBuilder
|
|
.create('user-summary')
|
|
.name('User Summary')
|
|
.description('Abbreviated user information for references')
|
|
.property('name', { type: 'primitive', primitiveType: 'string', required: true })
|
|
.property('email', { type: 'primitive', primitiveType: 'string' })
|
|
.build(),
|
|
|
|
// Document schema
|
|
Document: () => SchemaBuilder
|
|
.create('document')
|
|
.name('Document')
|
|
.description('A document with title, content, and author')
|
|
.property('title', { type: 'primitive', primitiveType: 'string', required: true })
|
|
.property('content', { type: 'primitive', primitiveType: 'string' })
|
|
.property('author', {
|
|
type: 'reference',
|
|
targetSchema: 'user-summary',
|
|
maxDepth: 1,
|
|
required: true
|
|
})
|
|
.property('tags', {
|
|
type: 'array',
|
|
itemSchema: { type: 'primitive', primitiveType: 'string' }
|
|
})
|
|
.property('created', { type: 'primitive', primitiveType: 'number', required: true })
|
|
.property('published', { type: 'primitive', primitiveType: 'boolean' })
|
|
.required('title', 'author', 'created')
|
|
.build()
|
|
} as const;
|