forked from wangziqi/gongxue-base
31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import { readPocketBaseSchema, fieldsOf } from './pb-schema.js';
|
|
|
|
const { absPath, collections, byId } = readPocketBaseSchema();
|
|
|
|
const businessCollections = collections.filter(c => !c.name.startsWith('_'));
|
|
const authCollections = collections.filter(c => c.type === 'auth');
|
|
const relationCount = collections.reduce(
|
|
(count, collection) => count + fieldsOf(collection).filter(field => field.type === 'relation').length,
|
|
0,
|
|
);
|
|
|
|
console.log(`PocketBase schema: ${absPath}`);
|
|
console.log(`Collections: ${collections.length}`);
|
|
console.log(`Business collections: ${businessCollections.length}`);
|
|
console.log(`Auth collections: ${authCollections.map(c => c.name).join(', ') || 'none'}`);
|
|
console.log(`Relation fields: ${relationCount}`);
|
|
console.log('');
|
|
|
|
for (const collection of businessCollections.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
const fields = fieldsOf(collection);
|
|
const relationFields = fields.filter(field => field.type === 'relation');
|
|
const relationSummary = relationFields
|
|
.map(field => {
|
|
const target = field.collectionId ? byId.get(field.collectionId)?.name || field.collectionId : '?';
|
|
return `${field.name}->${target}`;
|
|
})
|
|
.join(', ');
|
|
|
|
console.log(`${collection.name.padEnd(24)} ${collection.type.padEnd(6)} fields=${String(fields.length).padStart(2)} relations=${relationSummary || '-'}`);
|
|
}
|