diff --git a/apps/web/app/api/agents/route.ts b/apps/web/app/api/agents/route.ts index aace67b..ba2e08d 100644 --- a/apps/web/app/api/agents/route.ts +++ b/apps/web/app/api/agents/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('agents').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/canvases/route.ts b/apps/web/app/api/canvases/route.ts index a1a57e6..171c098 100644 --- a/apps/web/app/api/canvases/route.ts +++ b/apps/web/app/api/canvases/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('canvases').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/domains/route.ts b/apps/web/app/api/domains/route.ts index 63b0d2e..d6dbe32 100644 --- a/apps/web/app/api/domains/route.ts +++ b/apps/web/app/api/domains/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || 'sort_order'; const pb = createPocketBaseClient(); const result = await pb.collection('domains').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/habit-logs/route.ts b/apps/web/app/api/habit-logs/route.ts index 82b3609..d830113 100644 --- a/apps/web/app/api/habit-logs/route.ts +++ b/apps/web/app/api/habit-logs/route.ts @@ -20,7 +20,7 @@ export const GET = withAuth(async (request: NextRequest) => { const pb = createPocketBaseClient(); const result = await pb.collection('habit_logs').getList(1, 1000, { - filter, + ...(filter ? { filter } : {}), sort: '-logged_at', }); diff --git a/apps/web/app/api/habits/[id]/logs/route.ts b/apps/web/app/api/habits/[id]/logs/route.ts index 04c17be..8d9ff07 100644 --- a/apps/web/app/api/habits/[id]/logs/route.ts +++ b/apps/web/app/api/habits/[id]/logs/route.ts @@ -12,7 +12,7 @@ export const GET = withAuth(async (request: NextRequest, _user, co const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-logged_at'; const pb = createPocketBaseClient(); diff --git a/apps/web/app/api/habits/route.ts b/apps/web/app/api/habits/route.ts index ee84ce1..e4519a7 100644 --- a/apps/web/app/api/habits/route.ts +++ b/apps/web/app/api/habits/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('habits').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/milestones/route.ts b/apps/web/app/api/milestones/route.ts index 1e0a7a2..125084c 100644 --- a/apps/web/app/api/milestones/route.ts +++ b/apps/web/app/api/milestones/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('milestones').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/notes/route.ts b/apps/web/app/api/notes/route.ts index ead1b65..2d9affa 100644 --- a/apps/web/app/api/notes/route.ts +++ b/apps/web/app/api/notes/route.ts @@ -10,12 +10,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('notes').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/projects/route.ts b/apps/web/app/api/projects/route.ts index c6caa72..d7bf5f7 100644 --- a/apps/web/app/api/projects/route.ts +++ b/apps/web/app/api/projects/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('projects').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/reports/route.ts b/apps/web/app/api/reports/route.ts index c25ee90..c88d93b 100644 --- a/apps/web/app/api/reports/route.ts +++ b/apps/web/app/api/reports/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('reports').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/tags/route.ts b/apps/web/app/api/tags/route.ts index b9d650d..822bd59 100644 --- a/apps/web/app/api/tags/route.ts +++ b/apps/web/app/api/tags/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || 'name'; const pb = createPocketBaseClient(); const result = await pb.collection('tags').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/tasks/route.ts b/apps/web/app/api/tasks/route.ts index d3d0ed8..c2fa1f6 100644 --- a/apps/web/app/api/tasks/route.ts +++ b/apps/web/app/api/tasks/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('tasks').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/app/api/webhook-deliveries/route.ts b/apps/web/app/api/webhook-deliveries/route.ts index 310e0f0..1d71439 100644 --- a/apps/web/app/api/webhook-deliveries/route.ts +++ b/apps/web/app/api/webhook-deliveries/route.ts @@ -7,7 +7,7 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const webhookId = searchParams.get('webhook_id') || ''; diff --git a/apps/web/app/api/webhooks/route.ts b/apps/web/app/api/webhooks/route.ts index 6c35347..6267c37 100644 --- a/apps/web/app/api/webhooks/route.ts +++ b/apps/web/app/api/webhooks/route.ts @@ -9,12 +9,12 @@ export const GET = withAuth(async (request: NextRequest, _user) => { const { searchParams } = new URL(request.url); const page = parseInt(searchParams.get('page') || '1'); const perPage = parseInt(searchParams.get('perPage') || '50'); - const filter = searchParams.get('filter') || ''; + const filter = searchParams.get('filter') || undefined; const sort = searchParams.get('sort') || '-created'; const pb = createPocketBaseClient(); const result = await pb.collection('webhooks').getList(page, perPage, { - filter, + ...(filter ? { filter } : {}), sort, }); diff --git a/apps/web/lib/auth.ts b/apps/web/lib/auth.ts index b001460..c164ca0 100644 --- a/apps/web/lib/auth.ts +++ b/apps/web/lib/auth.ts @@ -1,5 +1,4 @@ import { NextRequest, NextResponse } from 'next/server'; -import { createPocketBaseClient } from './pocketbase'; export interface AuthUser { id: string; @@ -23,13 +22,24 @@ export async function getAuthUser(request: NextRequest): Promise( ); } + console.error('[withAuth] error:', error); return NextResponse.json( - { error: { code: 'INTERNAL_ERROR', message: 'Authentication failed' } }, + { error: { code: 'INTERNAL_ERROR', message: 'Auth error: ' + (error instanceof Error ? error.message : String(error)) } }, { status: 500 } ); } @@ -134,4 +145,4 @@ export function createErrorResponse( }, { status } ); -} +} \ No newline at end of file diff --git a/apps/web/lib/pocketbase.ts b/apps/web/lib/pocketbase.ts index 8fb98cc..05b7f36 100644 --- a/apps/web/lib/pocketbase.ts +++ b/apps/web/lib/pocketbase.ts @@ -29,7 +29,7 @@ export function createAdminClient(): PocketBase { const pb = new PocketBase(pocketbaseUrl); const adminToken = getAdminToken(); if (adminToken) { - pb.authStore.save(adminToken, null); + pb.authStore.save(adminToken, { id: 'admin', email: 'admin@projecte.local', collectionId: '_superusers', collectionName: '_superusers' } as any); } return pb; } diff --git a/docker-compose.yml b/docker-compose.yml index 53ad109..26944e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,8 +7,8 @@ services: # For Nginx Proxy Manager: Don't expose ports directly # NPM will connect via Docker network using container name # Only uncomment ports if you need direct access for debugging - # ports: - # - "3000:3000" + ports: + - "3000:3000" environment: - NODE_ENV=production - POCKETBASE_URL=http://db:8090 @@ -38,8 +38,8 @@ services: container_name: project-e-db # For Nginx Proxy Manager: Don't expose ports directly # Only uncomment if you need direct PocketBase admin access - # ports: - # - "8090:8090" + ports: + - "8090:8090" volumes: - project-e-pb-data:/pb_data networks: diff --git a/pocketbase/pb_migrations/1700000000_create_domains.js b/pocketbase/pb_migrations/1700000000_create_domains.js deleted file mode 100644 index 90c19d8..0000000 --- a/pocketbase/pb_migrations/1700000000_create_domains.js +++ /dev/null @@ -1,39 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'domains', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'color', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'icon', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'sort_order', - type: 'number', - options: {} - }) - ]), - indexes: [ - 'CREATE UNIQUE INDEX idx_domains_name ON domains (name)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('domains'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000001_create_tags.js b/pocketbase/pb_migrations/1700000001_create_tags.js deleted file mode 100644 index f5029f8..0000000 --- a/pocketbase/pb_migrations/1700000001_create_tags.js +++ /dev/null @@ -1,29 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'tags', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'color', - type: 'text', - options: { maxSize: 255 } - }) - ]), - indexes: [ - 'CREATE UNIQUE INDEX idx_tags_name ON tags (name)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('tags'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000002_create_projects.js b/pocketbase/pb_migrations/1700000002_create_projects.js deleted file mode 100644 index 5a7b02b..0000000 --- a/pocketbase/pb_migrations/1700000002_create_projects.js +++ /dev/null @@ -1,72 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'projects', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'color', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'icon', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['active', 'paused', 'archived'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'goal', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'deadline', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'progress', - type: 'number', - options: { min: 0, max: 100 } - }), - app.models.NewSchemaField({ - name: 'members', - type: 'json', - options: {} - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('projects'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000003_create_project_settings.js b/pocketbase/pb_migrations/1700000003_create_project_settings.js deleted file mode 100644 index ccf0d23..0000000 --- a/pocketbase/pb_migrations/1700000003_create_project_settings.js +++ /dev/null @@ -1,79 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'project_settings', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'project_id', - type: 'relation', - required: true, - options: { collectionId: 'projects', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'default_priority', - type: 'select', - options: { values: ['low', 'medium', 'high', 'urgent'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'default_domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'default_tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'auto_archive_completed_after_days', - type: 'number', - options: {} - }), - app.models.NewSchemaField({ - name: 'default_view', - type: 'select', - options: { values: ['kanban', 'list'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'habit_reminder_time_default', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'pomodoro_focus_minutes', - type: 'number', - options: { min: 1, max: 120 } - }), - app.models.NewSchemaField({ - name: 'pomodoro_break_minutes', - type: 'number', - options: { min: 1, max: 60 } - }), - app.models.NewSchemaField({ - name: 'accent_color_override', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'milestone_dependency_enforcement', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'custom_fields', - type: 'json', - options: {} - }) - ]), - indexes: [ - 'CREATE UNIQUE INDEX idx_project_settings_project_id ON project_settings (project_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('project_settings'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000004_create_milestones.js b/pocketbase/pb_migrations/1700000004_create_milestones.js deleted file mode 100644 index 157f363..0000000 --- a/pocketbase/pb_migrations/1700000004_create_milestones.js +++ /dev/null @@ -1,50 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'milestones', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'project_id', - type: 'relation', - required: true, - options: { collectionId: 'projects', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['planned', 'in_progress', 'complete'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'due_date', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'sort_order', - type: 'number', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_milestones_project_id ON milestones (project_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('milestones'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000005_create_milestone_dependencies.js b/pocketbase/pb_migrations/1700000005_create_milestone_dependencies.js deleted file mode 100644 index 6d3a72e..0000000 --- a/pocketbase/pb_migrations/1700000005_create_milestone_dependencies.js +++ /dev/null @@ -1,31 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'milestone_dependencies', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'milestone_id', - type: 'relation', - required: true, - options: { collectionId: 'milestones', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'depends_on_milestone_id', - type: 'relation', - required: true, - options: { collectionId: 'milestones', maxSelect: 1, cascadeDelete: true } - }) - ]), - indexes: [ - 'CREATE INDEX idx_milestone_dependencies_milestone_id ON milestone_dependencies (milestone_id)', - 'CREATE INDEX idx_milestone_dependencies_depends_on ON milestone_dependencies (depends_on_milestone_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('milestone_dependencies'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000006_create_milestone_templates.js b/pocketbase/pb_migrations/1700000006_create_milestone_templates.js deleted file mode 100644 index 55e00db..0000000 --- a/pocketbase/pb_migrations/1700000006_create_milestone_templates.js +++ /dev/null @@ -1,32 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'milestone_templates', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'milestones', - type: 'json', - options: {} - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('milestone_templates'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000007_create_milestone_history.js b/pocketbase/pb_migrations/1700000007_create_milestone_history.js deleted file mode 100644 index 9b3f73b..0000000 --- a/pocketbase/pb_migrations/1700000007_create_milestone_history.js +++ /dev/null @@ -1,44 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'milestone_history', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'milestone_id', - type: 'relation', - required: true, - options: { collectionId: 'milestones', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'old_status', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'new_status', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'changed_by', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'changed_at', - type: 'date', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_milestone_history_milestone_id ON milestone_history (milestone_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('milestone_history'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000008_create_tasks.js b/pocketbase/pb_migrations/1700000008_create_tasks.js deleted file mode 100644 index 9a164ff..0000000 --- a/pocketbase/pb_migrations/1700000008_create_tasks.js +++ /dev/null @@ -1,112 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'tasks', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['todo', 'in_progress', 'done', 'cancelled'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'priority', - type: 'select', - options: { values: ['low', 'medium', 'high', 'urgent'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'due_date', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'project_id', - type: 'relation', - options: { collectionId: 'projects', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'milestone_id', - type: 'relation', - options: { collectionId: 'milestones', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'assignee', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'estimate', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'time_spent', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'recurring_config', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'attachments', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'dependencies', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'subtasks', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'custom_fields', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'completed_at', - type: 'date', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_tasks_project_id ON tasks (project_id)', - 'CREATE INDEX idx_tasks_milestone_id ON tasks (milestone_id)', - 'CREATE INDEX idx_tasks_status ON tasks (status)', - 'CREATE INDEX idx_tasks_priority ON tasks (priority)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('tasks'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000009_create_task_subtasks.js b/pocketbase/pb_migrations/1700000009_create_task_subtasks.js deleted file mode 100644 index a6f327c..0000000 --- a/pocketbase/pb_migrations/1700000009_create_task_subtasks.js +++ /dev/null @@ -1,40 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'task_subtasks', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'done', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'sort_order', - type: 'number', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_task_subtasks_task_id ON task_subtasks (task_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('task_subtasks'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000010_create_task_dependencies.js b/pocketbase/pb_migrations/1700000010_create_task_dependencies.js deleted file mode 100644 index 213cc89..0000000 --- a/pocketbase/pb_migrations/1700000010_create_task_dependencies.js +++ /dev/null @@ -1,31 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'task_dependencies', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'depends_on_task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }) - ]), - indexes: [ - 'CREATE INDEX idx_task_dependencies_task_id ON task_dependencies (task_id)', - 'CREATE INDEX idx_task_dependencies_depends_on ON task_dependencies (depends_on_task_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('task_dependencies'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000011_create_task_attachments.js b/pocketbase/pb_migrations/1700000011_create_task_attachments.js deleted file mode 100644 index b2f21a7..0000000 --- a/pocketbase/pb_migrations/1700000011_create_task_attachments.js +++ /dev/null @@ -1,45 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'task_attachments', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'file', - type: 'file', - required: true, - options: { maxSelect: 1, maxSize: 5242880, mimeTypes: [] } - }), - app.models.NewSchemaField({ - name: 'filename', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'mime_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'size', - type: 'number', - options: { min: 0 } - }) - ]), - indexes: [ - 'CREATE INDEX idx_task_attachments_task_id ON task_attachments (task_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('task_attachments'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000012_create_task_time_entries.js b/pocketbase/pb_migrations/1700000012_create_task_time_entries.js deleted file mode 100644 index 85ffa0e..0000000 --- a/pocketbase/pb_migrations/1700000012_create_task_time_entries.js +++ /dev/null @@ -1,50 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'task_time_entries', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'duration', - type: 'number', - required: true, - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'started_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'ended_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'source', - type: 'select', - options: { values: ['manual', 'timer', 'pomodoro'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'notes', - type: 'text', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_task_time_entries_task_id ON task_time_entries (task_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('task_time_entries'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000013_create_habits.js b/pocketbase/pb_migrations/1700000013_create_habits.js deleted file mode 100644 index 35387b0..0000000 --- a/pocketbase/pb_migrations/1700000013_create_habits.js +++ /dev/null @@ -1,119 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'habits', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'frequency', - type: 'select', - options: { values: ['daily', 'weekly', 'custom'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'cron_expression', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'target_count', - type: 'number', - options: { min: 1 } - }), - app.models.NewSchemaField({ - name: 'streak_current', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'streak_best', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'last_completed_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'project_id', - type: 'relation', - options: { collectionId: 'projects', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'difficulty', - type: 'select', - options: { values: ['easy', 'medium', 'hard'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'mood_tracking', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'reminder_times', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'skip_days', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'unit', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'goal_per_period', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'score', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'score_config', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'completion_mode', - type: 'select', - options: { values: ['quick', 'detailed'], maxSelect: 1 } - }) - ]), - indexes: [ - 'CREATE INDEX idx_habits_project_id ON habits (project_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('habits'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000014_create_habit_logs.js b/pocketbase/pb_migrations/1700000014_create_habit_logs.js deleted file mode 100644 index 641b49f..0000000 --- a/pocketbase/pb_migrations/1700000014_create_habit_logs.js +++ /dev/null @@ -1,46 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'habit_logs', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'habit_id', - type: 'relation', - required: true, - options: { collectionId: 'habits', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'date', - type: 'date', - required: true, - options: {} - }), - app.models.NewSchemaField({ - name: 'mood', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'quantity', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'notes', - type: 'text', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_habit_logs_habit_id ON habit_logs (habit_id)', - 'CREATE INDEX idx_habit_logs_date ON habit_logs (date)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('habit_logs'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000015_create_habit_skip_days.js b/pocketbase/pb_migrations/1700000015_create_habit_skip_days.js deleted file mode 100644 index d04ecec..0000000 --- a/pocketbase/pb_migrations/1700000015_create_habit_skip_days.js +++ /dev/null @@ -1,36 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'habit_skip_days', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'habit_id', - type: 'relation', - required: true, - options: { collectionId: 'habits', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'date', - type: 'date', - required: true, - options: {} - }), - app.models.NewSchemaField({ - name: 'reason', - type: 'text', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_habit_skip_days_habit_id ON habit_skip_days (habit_id)', - 'CREATE INDEX idx_habit_skip_days_date ON habit_skip_days (date)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('habit_skip_days'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000016_create_notes.js b/pocketbase/pb_migrations/1700000016_create_notes.js deleted file mode 100644 index 76b6dd8..0000000 --- a/pocketbase/pb_migrations/1700000016_create_notes.js +++ /dev/null @@ -1,72 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'notes', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'content', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'linked_entities', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'created_by', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'ai_generated', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'bookmarked', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'pinned', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'frontmatter', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'wikilinks', - type: 'json', - options: {} - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('notes'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000017_create_note_links.js b/pocketbase/pb_migrations/1700000017_create_note_links.js deleted file mode 100644 index ba6e891..0000000 --- a/pocketbase/pb_migrations/1700000017_create_note_links.js +++ /dev/null @@ -1,36 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'note_links', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'source_note_id', - type: 'relation', - required: true, - options: { collectionId: 'notes', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'target_note_id', - type: 'relation', - required: true, - options: { collectionId: 'notes', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'link_text', - type: 'text', - options: { maxSize: 255 } - }) - ]), - indexes: [ - 'CREATE INDEX idx_note_links_source ON note_links (source_note_id)', - 'CREATE INDEX idx_note_links_target ON note_links (target_note_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('note_links'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000018_create_note_task_links.js b/pocketbase/pb_migrations/1700000018_create_note_task_links.js deleted file mode 100644 index 38bba29..0000000 --- a/pocketbase/pb_migrations/1700000018_create_note_task_links.js +++ /dev/null @@ -1,36 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'note_task_links', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'note_id', - type: 'relation', - required: true, - options: { collectionId: 'notes', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'task_id', - type: 'relation', - required: true, - options: { collectionId: 'tasks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'checkbox_position', - type: 'number', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_note_task_links_note_id ON note_task_links (note_id)', - 'CREATE INDEX idx_note_task_links_task_id ON note_task_links (task_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('note_task_links'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000019_create_report_templates.js b/pocketbase/pb_migrations/1700000019_create_report_templates.js deleted file mode 100644 index 5da7985..0000000 --- a/pocketbase/pb_migrations/1700000019_create_report_templates.js +++ /dev/null @@ -1,42 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'report_templates', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'report_type', - type: 'select', - options: { values: ['weekly', 'monthly', 'project', 'habit', 'custom'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'content_template', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'is_builtin', - type: 'bool', - options: {} - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('report_templates'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000020_create_reports.js b/pocketbase/pb_migrations/1700000020_create_reports.js deleted file mode 100644 index 363d6b4..0000000 --- a/pocketbase/pb_migrations/1700000020_create_reports.js +++ /dev/null @@ -1,72 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'reports', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'content', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'report_type', - type: 'select', - options: { values: ['weekly', 'monthly', 'project', 'habit', 'custom'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'date_range_start', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'date_range_end', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'generated_by', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'ai_generated', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'linked_entities', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'domain', - type: 'relation', - options: { collectionId: 'domains', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'tags', - type: 'relation', - options: { collectionId: 'tags', maxSelect: 10, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'template_id', - type: 'relation', - options: { collectionId: 'report_templates', maxSelect: 1, cascadeDelete: false } - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('reports'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000021_create_canvases.js b/pocketbase/pb_migrations/1700000021_create_canvases.js deleted file mode 100644 index 1ca9db6..0000000 --- a/pocketbase/pb_migrations/1700000021_create_canvases.js +++ /dev/null @@ -1,39 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'canvases', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'mode', - type: 'select', - options: { values: ['freeform', 'graph'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'project_id', - type: 'relation', - options: { collectionId: 'projects', maxSelect: 1, cascadeDelete: false } - }), - app.models.NewSchemaField({ - name: 'state', - type: 'json', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_canvases_project_id ON canvases (project_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('canvases'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000022_create_canvas_cards.js b/pocketbase/pb_migrations/1700000022_create_canvas_cards.js deleted file mode 100644 index 283be9c..0000000 --- a/pocketbase/pb_migrations/1700000022_create_canvas_cards.js +++ /dev/null @@ -1,64 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'canvas_cards', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'canvas_id', - type: 'relation', - required: true, - options: { collectionId: 'canvases', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'card_type', - type: 'select', - options: { values: ['note', 'task', 'image', 'entity'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'entity_id', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'entity_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'position_x', - type: 'number', - options: {} - }), - app.models.NewSchemaField({ - name: 'position_y', - type: 'number', - options: {} - }), - app.models.NewSchemaField({ - name: 'width', - type: 'number', - options: { min: 1 } - }), - app.models.NewSchemaField({ - name: 'height', - type: 'number', - options: { min: 1 } - }), - app.models.NewSchemaField({ - name: 'content', - type: 'json', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_canvas_cards_canvas_id ON canvas_cards (canvas_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('canvas_cards'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000023_create_agents.js b/pocketbase/pb_migrations/1700000023_create_agents.js deleted file mode 100644 index a386c42..0000000 --- a/pocketbase/pb_migrations/1700000023_create_agents.js +++ /dev/null @@ -1,65 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'agents', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'api_key', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'avatar', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'description', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'permission_tier', - type: 'select', - options: { values: ['full_access', 'read_only', 'content_creator', 'task_manager', 'custom'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'custom_permissions', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'webhook_url', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'last_activity_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['active', 'disabled'], maxSelect: 1 } - }) - ]), - indexes: [ - 'CREATE UNIQUE INDEX idx_agents_api_key ON agents (api_key)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('agents'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000024_create_agent_activity.js b/pocketbase/pb_migrations/1700000024_create_agent_activity.js deleted file mode 100644 index b07fb3d..0000000 --- a/pocketbase/pb_migrations/1700000024_create_agent_activity.js +++ /dev/null @@ -1,59 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'agent_activity', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'agent_id', - type: 'relation', - required: true, - options: { collectionId: 'agents', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'action', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'entity_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'entity_id', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'before_state', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'after_state', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'prompt', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'response', - type: 'text', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_agent_activity_agent_id ON agent_activity (agent_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('agent_activity'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000025_create_webhooks.js b/pocketbase/pb_migrations/1700000025_create_webhooks.js deleted file mode 100644 index f9af4c3..0000000 --- a/pocketbase/pb_migrations/1700000025_create_webhooks.js +++ /dev/null @@ -1,43 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'webhooks', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'name', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'url', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'events', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'secret', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'active', - type: 'bool', - options: {} - }) - ]), - indexes: [] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('webhooks'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000026_create_webhook_deliveries.js b/pocketbase/pb_migrations/1700000026_create_webhook_deliveries.js deleted file mode 100644 index a2b7567..0000000 --- a/pocketbase/pb_migrations/1700000026_create_webhook_deliveries.js +++ /dev/null @@ -1,54 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'webhook_deliveries', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'webhook_id', - type: 'relation', - required: true, - options: { collectionId: 'webhooks', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'event_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'payload', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'response_status', - type: 'number', - options: {} - }), - app.models.NewSchemaField({ - name: 'response_body', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'success', - type: 'bool', - options: {} - }), - app.models.NewSchemaField({ - name: 'attempts', - type: 'number', - options: { min: 0 } - }) - ]), - indexes: [ - 'CREATE INDEX idx_webhook_deliveries_webhook_id ON webhook_deliveries (webhook_id)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('webhook_deliveries'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000027_create_agent_tasks.js b/pocketbase/pb_migrations/1700000027_create_agent_tasks.js deleted file mode 100644 index 3f3b5d9..0000000 --- a/pocketbase/pb_migrations/1700000027_create_agent_tasks.js +++ /dev/null @@ -1,50 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'agent_tasks', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'agent_id', - type: 'relation', - required: true, - options: { collectionId: 'agents', maxSelect: 1, cascadeDelete: true } - }), - app.models.NewSchemaField({ - name: 'entity_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'entity_id', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'instruction', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['pending', 'in_progress', 'completed', 'failed', 'delivery_failed'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'result', - type: 'json', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_agent_tasks_agent_id ON agent_tasks (agent_id)', - 'CREATE INDEX idx_agent_tasks_status ON agent_tasks (status)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('agent_tasks'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000028_create_notifications.js b/pocketbase/pb_migrations/1700000028_create_notifications.js deleted file mode 100644 index 2bb9d8c..0000000 --- a/pocketbase/pb_migrations/1700000028_create_notifications.js +++ /dev/null @@ -1,49 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'notifications', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'title', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'message', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'type', - type: 'select', - options: { values: ['info', 'success', 'warning', 'error'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'entity_type', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'entity_id', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'read', - type: 'bool', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_notifications_read ON notifications (read)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('notifications'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000029_create_error_logs.js b/pocketbase/pb_migrations/1700000029_create_error_logs.js deleted file mode 100644 index e75a5f1..0000000 --- a/pocketbase/pb_migrations/1700000029_create_error_logs.js +++ /dev/null @@ -1,44 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'error_logs', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'code', - type: 'text', - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'message', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'details', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'stack_trace', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'source', - type: 'text', - options: { maxSize: 255 } - }) - ]), - indexes: [ - 'CREATE INDEX idx_error_logs_code ON error_logs (code)', - 'CREATE INDEX idx_error_logs_source ON error_logs (source)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('error_logs'); - return app.delete(collection); - } -}; diff --git a/pocketbase/pb_migrations/1700000030_create_queue_jobs.js b/pocketbase/pb_migrations/1700000030_create_queue_jobs.js deleted file mode 100644 index d663d33..0000000 --- a/pocketbase/pb_migrations/1700000030_create_queue_jobs.js +++ /dev/null @@ -1,66 +0,0 @@ -exports = { - up: async (app) => { - const collection = new app.models.Collection({ - name: 'queue_jobs', - type: 'base', - schema: app.models.NewSchema([ - app.models.NewSchemaField({ - name: 'job_type', - type: 'text', - required: true, - options: { maxSize: 255 } - }), - app.models.NewSchemaField({ - name: 'payload', - type: 'json', - options: {} - }), - app.models.NewSchemaField({ - name: 'status', - type: 'select', - options: { values: ['pending', 'in_progress', 'completed', 'failed'], maxSelect: 1 } - }), - app.models.NewSchemaField({ - name: 'attempts', - type: 'number', - options: { min: 0 } - }), - app.models.NewSchemaField({ - name: 'max_attempts', - type: 'number', - options: { min: 1 } - }), - app.models.NewSchemaField({ - name: 'error', - type: 'text', - options: {} - }), - app.models.NewSchemaField({ - name: 'scheduled_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'started_at', - type: 'date', - options: {} - }), - app.models.NewSchemaField({ - name: 'completed_at', - type: 'date', - options: {} - }) - ]), - indexes: [ - 'CREATE INDEX idx_queue_jobs_status ON queue_jobs (status)', - 'CREATE INDEX idx_queue_jobs_scheduled_at ON queue_jobs (scheduled_at)', - 'CREATE INDEX idx_queue_jobs_job_type ON queue_jobs (job_type)' - ] - }); - return app.save(collection); - }, - down: async (app) => { - const collection = await app.findCollectionByNameOrId('queue_jobs'); - return app.delete(collection); - } -};