59 lines
2 KiB
TypeScript
59 lines
2 KiB
TypeScript
|
|
import PocketBase from 'pocketbase';
|
|||
|
|
|
|||
|
|
const PB_URL = process.env.POCKETBASE_URL || 'http://127.0.0.1:8090';
|
|||
|
|
const ADMIN_EMAIL = process.env.PB_ADMIN_EMAIL;
|
|||
|
|
const ADMIN_PASSWORD = process.env.PB_ADMIN_PASSWORD;
|
|||
|
|
|
|||
|
|
async function createCollection() {
|
|||
|
|
if (!ADMIN_EMAIL || !ADMIN_PASSWORD) {
|
|||
|
|
console.error('❌ Укажите PB_ADMIN_EMAIL и PB_ADMIN_PASSWORD в .env');
|
|||
|
|
process.exit(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const pb = new PocketBase(PB_URL);
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
await pb.admins.authWithPassword(ADMIN_EMAIL, ADMIN_PASSWORD);
|
|||
|
|
console.log('✅ Подключено к PocketBase');
|
|||
|
|
} catch (e) {
|
|||
|
|
console.error('❌ Ошибка авторизации');
|
|||
|
|
process.exit(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
const collection = await pb.collections.create({
|
|||
|
|
name: 'posts',
|
|||
|
|
type: 'base',
|
|||
|
|
system: false,
|
|||
|
|
schema: [
|
|||
|
|
{ name: 'title', type: 'text', required: true },
|
|||
|
|
{ name: 'description', type: 'text', required: true },
|
|||
|
|
{ name: 'author', type: 'text', required: false },
|
|||
|
|
{ name: 'category', type: 'text', required: false },
|
|||
|
|
{ name: 'categoryColor', type: 'text', required: false },
|
|||
|
|
{ name: 'date', type: 'date', required: true },
|
|||
|
|
{ name: 'readTime', type: 'text', required: false },
|
|||
|
|
{ name: 'imageUrl', type: 'text', required: false },
|
|||
|
|
{ name: 'slug', type: 'text', required: true },
|
|||
|
|
{ name: 'draft', type: 'bool', required: false },
|
|||
|
|
{ name: 'content', type: 'editor', required: false },
|
|||
|
|
],
|
|||
|
|
listRule: '',
|
|||
|
|
viewRule: '',
|
|||
|
|
createRule: '@request.auth.id != ""',
|
|||
|
|
updateRule: '@request.auth.id != ""',
|
|||
|
|
deleteRule: '@request.auth.id != ""',
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log('✅ Коллекция "posts" создана');
|
|||
|
|
console.log(' ID:', collection.id);
|
|||
|
|
} catch (e: any) {
|
|||
|
|
if (e.data?.message?.includes('already exists')) {
|
|||
|
|
console.log('ℹ️ Коллекция "posts" уже существует');
|
|||
|
|
} else {
|
|||
|
|
console.error('❌ Ошибка:', e.data || e.message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
createCollection();
|