@wearesage/schema
Version:
A flexible schema definition and validation system for TypeScript with multi-database support
81 lines (64 loc) • 1.95 kB
text/typescript
import 'reflect-metadata';
import { Entity, Property, Id, Auth } from './core/decorators';
import { universalEntityService } from './services/UniversalEntityService';
()
({ permissions: ['user'] })
class TestSpace {
()
id!: string;
({ required: true })
name!: string;
({ required: true })
ownedByType!: 'user' | 'team';
({ required: true })
ownedById!: string;
({ required: true })
visibility!: 'private' | 'public';
({ required: true })
spaceType!: 'project' | 'library';
()
attemptCount?: number;
()
subscribedEvents?: string[];
()
metadata?: object;
}
async function testNeo4jSerialization() {
console.log('🔍 Testing Neo4j serialization directly in schema package...');
// Register the test entity
universalEntityService.registerEntities([TestSpace]);
const testUser = {
user: {
id: 'user123',
username: 'testuser',
email: 'test@example.com',
role: 0,
permissions: ['user']
}
};
const spaceData = {
name: 'Direct Test Space',
ownedByType: 'user' as const,
ownedById: 'user123',
visibility: 'private' as const,
spaceType: 'project' as const,
attemptCount: 0,
subscribedEvents: [],
metadata: {}
};
console.log('🔍 Test data:', JSON.stringify(spaceData, null, 2));
try {
const result = await universalEntityService.create(TestSpace, spaceData, testUser);
console.log('✅ SUCCESS! Neo4j serialization works!');
console.log('📦 Created entity:', result);
} catch (error) {
console.log('❌ FAILED:', (error as Error).message);
// Let's also check if it's specifically the Map issue
if ((error as Error).message.includes('Map{}')) {
console.log('🔍 Confirmed: Still has Map{} issue in schema package');
}
} finally {
process.exit(0);
}
}
testNeo4jSerialization();