feat: Add static count method to BaseModel and enhance OrbitDBService with debugging logs
This commit is contained in:
parent
9877ddf5ec
commit
9d8a8b1c2c
@ -306,6 +306,12 @@ export abstract class BaseModel {
|
|||||||
return results.length > 0 ? results[0] : null;
|
return results.length > 0 ? results[0] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async count<T extends BaseModel>(
|
||||||
|
this: typeof BaseModel & (new (data?: any) => T),
|
||||||
|
): Promise<number> {
|
||||||
|
return await new QueryBuilder<T>(this as any).count();
|
||||||
|
}
|
||||||
|
|
||||||
// Relationship operations
|
// Relationship operations
|
||||||
async load(relationships: string[]): Promise<this> {
|
async load(relationships: string[]): Promise<this> {
|
||||||
const framework = this.getFrameworkInstance();
|
const framework = this.getFrameworkInstance();
|
||||||
|
@ -36,6 +36,15 @@ export class FrameworkOrbitDBService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async openDatabase(name: string, type: StoreType): Promise<any> {
|
async openDatabase(name: string, type: StoreType): Promise<any> {
|
||||||
|
console.log('FrameworkOrbitDBService.openDatabase called with:', { name, type });
|
||||||
|
console.log('this.orbitDBService:', this.orbitDBService);
|
||||||
|
console.log('typeof this.orbitDBService.openDB:', typeof this.orbitDBService.openDB);
|
||||||
|
console.log('this.orbitDBService methods:', Object.getOwnPropertyNames(Object.getPrototypeOf(this.orbitDBService)));
|
||||||
|
|
||||||
|
if (typeof this.orbitDBService.openDB !== 'function') {
|
||||||
|
throw new Error(`openDB is not a function. Service type: ${typeof this.orbitDBService}, methods: ${Object.getOwnPropertyNames(Object.getPrototypeOf(this.orbitDBService))}`);
|
||||||
|
}
|
||||||
|
|
||||||
return await this.orbitDBService.openDB(name, type);
|
return await this.orbitDBService.openDB(name, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,9 +627,6 @@ class BlogAPIServer {
|
|||||||
const { OrbitDBService } = await import(
|
const { OrbitDBService } = await import(
|
||||||
'../../../../src/framework/services/RealOrbitDBService'
|
'../../../../src/framework/services/RealOrbitDBService'
|
||||||
);
|
);
|
||||||
const { FrameworkIPFSService, FrameworkOrbitDBService } = await import(
|
|
||||||
'../../../../src/framework/services/OrbitDBService'
|
|
||||||
);
|
|
||||||
|
|
||||||
// Initialize IPFS service
|
// Initialize IPFS service
|
||||||
const ipfsService = new IPFSService({
|
const ipfsService = new IPFSService({
|
||||||
@ -648,10 +645,10 @@ class BlogAPIServer {
|
|||||||
await orbitDBService.init();
|
await orbitDBService.init();
|
||||||
console.log(`[${this.nodeId}] OrbitDB service initialized`);
|
console.log(`[${this.nodeId}] OrbitDB service initialized`);
|
||||||
|
|
||||||
// Wrap services for framework
|
// Debug: Check OrbitDB service methods
|
||||||
const frameworkIPFS = new FrameworkIPFSService(ipfsService);
|
console.log(`[${this.nodeId}] OrbitDB service methods:`, Object.getOwnPropertyNames(Object.getPrototypeOf(orbitDBService)));
|
||||||
const frameworkOrbitDB = new FrameworkOrbitDBService(orbitDBService);
|
console.log(`[${this.nodeId}] Has openDB method:`, typeof orbitDBService.openDB === 'function');
|
||||||
|
|
||||||
// Initialize framework
|
// Initialize framework
|
||||||
this.framework = new DebrosFramework({
|
this.framework = new DebrosFramework({
|
||||||
environment: 'test',
|
environment: 'test',
|
||||||
@ -669,8 +666,32 @@ class BlogAPIServer {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Pass raw services to framework - it will wrap them itself
|
||||||
await this.framework.initialize(orbitDBService, ipfsService);
|
await this.framework.initialize(orbitDBService, ipfsService);
|
||||||
console.log(`[${this.nodeId}] DebrosFramework initialized successfully`);
|
console.log(`[${this.nodeId}] DebrosFramework initialized successfully`);
|
||||||
|
|
||||||
|
// Register models with framework
|
||||||
|
this.framework.registerModel(User, {
|
||||||
|
scope: 'global',
|
||||||
|
type: 'docstore'
|
||||||
|
});
|
||||||
|
this.framework.registerModel(UserProfile, {
|
||||||
|
scope: 'global',
|
||||||
|
type: 'docstore'
|
||||||
|
});
|
||||||
|
this.framework.registerModel(Category, {
|
||||||
|
scope: 'global',
|
||||||
|
type: 'docstore'
|
||||||
|
});
|
||||||
|
this.framework.registerModel(Post, {
|
||||||
|
scope: 'user',
|
||||||
|
type: 'docstore'
|
||||||
|
});
|
||||||
|
this.framework.registerModel(Comment, {
|
||||||
|
scope: 'user',
|
||||||
|
type: 'docstore'
|
||||||
|
});
|
||||||
|
console.log(`[${this.nodeId}] Models registered with framework`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user