happy2 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/package.json +74 -0
- package/packages/happy2-server/Dockerfile +18 -0
- package/packages/happy2-server/README.md +418 -0
- package/packages/happy2-server/bin/happy2.js +3 -0
- package/packages/happy2-server/dist/cli.d.ts +3 -0
- package/packages/happy2-server/dist/cli.d.ts.map +1 -0
- package/packages/happy2-server/dist/cli.js +44 -0
- package/packages/happy2-server/dist/cli.js.map +1 -0
- package/packages/happy2-server/dist/index.d.ts +24 -0
- package/packages/happy2-server/dist/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/index.js +22 -0
- package/packages/happy2-server/dist/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts +8 -0
- package/packages/happy2-server/dist/modules/agents/builtin-images.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/builtin-images.js +283 -0
- package/packages/happy2-server/dist/modules/agents/builtin-images.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/command.d.ts +3 -0
- package/packages/happy2-server/dist/modules/agents/command.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/command.js +7 -0
- package/packages/happy2-server/dist/modules/agents/command.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/daemon.d.ts +106 -0
- package/packages/happy2-server/dist/modules/agents/daemon.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/daemon.js +522 -0
- package/packages/happy2-server/dist/modules/agents/daemon.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/docker.d.ts +51 -0
- package/packages/happy2-server/dist/modules/agents/docker.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/docker.js +256 -0
- package/packages/happy2-server/dist/modules/agents/docker.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/docker.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/agents/docker.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/docker.test.js +155 -0
- package/packages/happy2-server/dist/modules/agents/docker.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/index.d.ts +5 -0
- package/packages/happy2-server/dist/modules/agents/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/index.js +4 -0
- package/packages/happy2-server/dist/modules/agents/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/agents/service.d.ts +140 -0
- package/packages/happy2-server/dist/modules/agents/service.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/agents/service.js +1283 -0
- package/packages/happy2-server/dist/modules/agents/service.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts +15 -0
- package/packages/happy2-server/dist/modules/auth/cloudflare-access.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/cloudflare-access.js +49 -0
- package/packages/happy2-server/dist/modules/auth/cloudflare-access.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/crypto.d.ts +4 -0
- package/packages/happy2-server/dist/modules/auth/crypto.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/crypto.js +31 -0
- package/packages/happy2-server/dist/modules/auth/crypto.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/auth/crypto.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/crypto.test.js +11 -0
- package/packages/happy2-server/dist/modules/auth/crypto.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/email.d.ts +3 -0
- package/packages/happy2-server/dist/modules/auth/email.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/email.js +22 -0
- package/packages/happy2-server/dist/modules/auth/email.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/metadata.d.ts +5 -0
- package/packages/happy2-server/dist/modules/auth/metadata.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/metadata.js +28 -0
- package/packages/happy2-server/dist/modules/auth/metadata.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/auth/metadata.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/metadata.test.js +10 -0
- package/packages/happy2-server/dist/modules/auth/metadata.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/methods.d.ts +10 -0
- package/packages/happy2-server/dist/modules/auth/methods.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/methods.js +21 -0
- package/packages/happy2-server/dist/modules/auth/methods.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/methods.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/auth/methods.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/methods.test.js +16 -0
- package/packages/happy2-server/dist/modules/auth/methods.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/oidc.d.ts +9 -0
- package/packages/happy2-server/dist/modules/auth/oidc.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/oidc.js +68 -0
- package/packages/happy2-server/dist/modules/auth/oidc.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/service.d.ts +44 -0
- package/packages/happy2-server/dist/modules/auth/service.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/service.js +208 -0
- package/packages/happy2-server/dist/modules/auth/service.js.map +1 -0
- package/packages/happy2-server/dist/modules/auth/tokens.d.ts +21 -0
- package/packages/happy2-server/dist/modules/auth/tokens.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/auth/tokens.js +79 -0
- package/packages/happy2-server/dist/modules/auth/tokens.js.map +1 -0
- package/packages/happy2-server/dist/modules/automation/repository.d.ts +127 -0
- package/packages/happy2-server/dist/modules/automation/repository.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/automation/repository.js +821 -0
- package/packages/happy2-server/dist/modules/automation/repository.js.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.d.ts +839 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.js +5795 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.js.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.test.js +620 -0
- package/packages/happy2-server/dist/modules/collaboration/repository.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/types.d.ts +243 -0
- package/packages/happy2-server/dist/modules/collaboration/types.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/collaboration/types.js +8 -0
- package/packages/happy2-server/dist/modules/collaboration/types.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/defaults.d.ts +8 -0
- package/packages/happy2-server/dist/modules/config/defaults.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/defaults.js +70 -0
- package/packages/happy2-server/dist/modules/config/defaults.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/defaults.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/config/defaults.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/defaults.test.js +27 -0
- package/packages/happy2-server/dist/modules/config/defaults.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/environment.d.ts +4 -0
- package/packages/happy2-server/dist/modules/config/environment.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/environment.js +92 -0
- package/packages/happy2-server/dist/modules/config/environment.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/loader.d.ts +5 -0
- package/packages/happy2-server/dist/modules/config/loader.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/loader.js +251 -0
- package/packages/happy2-server/dist/modules/config/loader.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/loader.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/config/loader.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/loader.test.js +108 -0
- package/packages/happy2-server/dist/modules/config/loader.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/paths.d.ts +7 -0
- package/packages/happy2-server/dist/modules/config/paths.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/paths.js +15 -0
- package/packages/happy2-server/dist/modules/config/paths.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/paths.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/config/paths.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/paths.test.js +22 -0
- package/packages/happy2-server/dist/modules/config/paths.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/runtime.d.ts +6 -0
- package/packages/happy2-server/dist/modules/config/runtime.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/runtime.js +14 -0
- package/packages/happy2-server/dist/modules/config/runtime.js.map +1 -0
- package/packages/happy2-server/dist/modules/config/type.d.ts +88 -0
- package/packages/happy2-server/dist/modules/config/type.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/config/type.js +2 -0
- package/packages/happy2-server/dist/modules/config/type.js.map +1 -0
- package/packages/happy2-server/dist/modules/database.d.ts +105 -0
- package/packages/happy2-server/dist/modules/database.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/database.js +583 -0
- package/packages/happy2-server/dist/modules/database.js.map +1 -0
- package/packages/happy2-server/dist/modules/drizzle.d.ts +11 -0
- package/packages/happy2-server/dist/modules/drizzle.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/drizzle.js +31 -0
- package/packages/happy2-server/dist/modules/drizzle.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/lock.d.ts +3 -0
- package/packages/happy2-server/dist/modules/files/lock.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/lock.js +83 -0
- package/packages/happy2-server/dist/modules/files/lock.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/media.d.ts +18 -0
- package/packages/happy2-server/dist/modules/files/media.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/media.js +352 -0
- package/packages/happy2-server/dist/modules/files/media.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/provider.d.ts +130 -0
- package/packages/happy2-server/dist/modules/files/provider.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/provider.js +448 -0
- package/packages/happy2-server/dist/modules/files/provider.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/quota.d.ts +58 -0
- package/packages/happy2-server/dist/modules/files/quota.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/quota.js +180 -0
- package/packages/happy2-server/dist/modules/files/quota.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/routes.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/files/routes.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/routes.test.js +163 -0
- package/packages/happy2-server/dist/modules/files/routes.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/scanner.d.ts +27 -0
- package/packages/happy2-server/dist/modules/files/scanner.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/scanner.js +66 -0
- package/packages/happy2-server/dist/modules/files/scanner.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/storage.d.ts +95 -0
- package/packages/happy2-server/dist/modules/files/storage.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/storage.js +855 -0
- package/packages/happy2-server/dist/modules/files/storage.js.map +1 -0
- package/packages/happy2-server/dist/modules/files/storage.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/files/storage.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/files/storage.test.js +170 -0
- package/packages/happy2-server/dist/modules/files/storage.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/index.d.ts +6 -0
- package/packages/happy2-server/dist/modules/integrations/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/index.js +6 -0
- package/packages/happy2-server/dist/modules/integrations/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/repository.d.ts +136 -0
- package/packages/happy2-server/dist/modules/integrations/repository.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/repository.js +1229 -0
- package/packages/happy2-server/dist/modules/integrations/repository.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/integrations/repository.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/repository.test.js +345 -0
- package/packages/happy2-server/dist/modules/integrations/repository.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/integrations/routes.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/routes.test.js +161 -0
- package/packages/happy2-server/dist/modules/integrations/routes.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/secrets.d.ts +19 -0
- package/packages/happy2-server/dist/modules/integrations/secrets.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/secrets.js +69 -0
- package/packages/happy2-server/dist/modules/integrations/secrets.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts +32 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.js +185 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.test.js +56 -0
- package/packages/happy2-server/dist/modules/integrations/ssrf.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/transport.d.ts +21 -0
- package/packages/happy2-server/dist/modules/integrations/transport.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/transport.js +108 -0
- package/packages/happy2-server/dist/modules/integrations/transport.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/integrations/transport.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/transport.test.js +66 -0
- package/packages/happy2-server/dist/modules/integrations/transport.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/types.d.ts +155 -0
- package/packages/happy2-server/dist/modules/integrations/types.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/integrations/types.js +26 -0
- package/packages/happy2-server/dist/modules/integrations/types.js.map +1 -0
- package/packages/happy2-server/dist/modules/operations/export-worker.d.ts +16 -0
- package/packages/happy2-server/dist/modules/operations/export-worker.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/operations/export-worker.js +56 -0
- package/packages/happy2-server/dist/modules/operations/export-worker.js.map +1 -0
- package/packages/happy2-server/dist/modules/operations/repository.d.ts +215 -0
- package/packages/happy2-server/dist/modules/operations/repository.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/operations/repository.js +2011 -0
- package/packages/happy2-server/dist/modules/operations/repository.js.map +1 -0
- package/packages/happy2-server/dist/modules/operations/repository.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/operations/repository.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/operations/repository.test.js +610 -0
- package/packages/happy2-server/dist/modules/operations/repository.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/operations/types.d.ts +144 -0
- package/packages/happy2-server/dist/modules/operations/types.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/operations/types.js +9 -0
- package/packages/happy2-server/dist/modules/operations/types.js.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/events.d.ts +99 -0
- package/packages/happy2-server/dist/modules/realtime/events.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/events.js +173 -0
- package/packages/happy2-server/dist/modules/realtime/events.js.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/index.d.ts +4 -0
- package/packages/happy2-server/dist/modules/realtime/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/index.js +4 -0
- package/packages/happy2-server/dist/modules/realtime/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/local.d.ts +37 -0
- package/packages/happy2-server/dist/modules/realtime/local.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/local.js +181 -0
- package/packages/happy2-server/dist/modules/realtime/local.js.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/local.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/realtime/local.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/local.test.js +186 -0
- package/packages/happy2-server/dist/modules/realtime/local.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts +26 -0
- package/packages/happy2-server/dist/modules/realtime/pubsub.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/realtime/pubsub.js +7 -0
- package/packages/happy2-server/dist/modules/realtime/pubsub.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts +15 -0
- package/packages/happy2-server/dist/modules/request/database-idempotency.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/database-idempotency.js +141 -0
- package/packages/happy2-server/dist/modules/request/database-idempotency.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts +12 -0
- package/packages/happy2-server/dist/modules/request/idempotency-hook.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency-hook.js +98 -0
- package/packages/happy2-server/dist/modules/request/idempotency-hook.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency.d.ts +146 -0
- package/packages/happy2-server/dist/modules/request/idempotency.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency.js +312 -0
- package/packages/happy2-server/dist/modules/request/idempotency.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/request/idempotency.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/idempotency.test.js +191 -0
- package/packages/happy2-server/dist/modules/request/idempotency.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/index.d.ts +5 -0
- package/packages/happy2-server/dist/modules/request/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/index.js +5 -0
- package/packages/happy2-server/dist/modules/request/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.d.ts +100 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.js +239 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.js.map +1 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts +2 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.test.js +123 -0
- package/packages/happy2-server/dist/modules/request/rate-limit.test.js.map +1 -0
- package/packages/happy2-server/dist/modules/schema.d.ts +31454 -0
- package/packages/happy2-server/dist/modules/schema.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/schema.js +1081 -0
- package/packages/happy2-server/dist/modules/schema.js.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/index.d.ts +3 -0
- package/packages/happy2-server/dist/modules/workspace/index.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/index.js +3 -0
- package/packages/happy2-server/dist/modules/workspace/index.js.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/service.d.ts +54 -0
- package/packages/happy2-server/dist/modules/workspace/service.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/service.js +997 -0
- package/packages/happy2-server/dist/modules/workspace/service.js.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/types.d.ts +58 -0
- package/packages/happy2-server/dist/modules/workspace/types.d.ts.map +1 -0
- package/packages/happy2-server/dist/modules/workspace/types.js +11 -0
- package/packages/happy2-server/dist/modules/workspace/types.js.map +1 -0
- package/packages/happy2-server/dist/routes/agents.d.ts +5 -0
- package/packages/happy2-server/dist/routes/agents.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/agents.js +225 -0
- package/packages/happy2-server/dist/routes/agents.js.map +1 -0
- package/packages/happy2-server/dist/routes/auth.d.ts +5 -0
- package/packages/happy2-server/dist/routes/auth.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/auth.js +128 -0
- package/packages/happy2-server/dist/routes/auth.js.map +1 -0
- package/packages/happy2-server/dist/routes/automation.d.ts +6 -0
- package/packages/happy2-server/dist/routes/automation.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/automation.js +315 -0
- package/packages/happy2-server/dist/routes/automation.js.map +1 -0
- package/packages/happy2-server/dist/routes/basic.d.ts +3 -0
- package/packages/happy2-server/dist/routes/basic.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/basic.js +5 -0
- package/packages/happy2-server/dist/routes/basic.js.map +1 -0
- package/packages/happy2-server/dist/routes/collaboration.d.ts +7 -0
- package/packages/happy2-server/dist/routes/collaboration.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/collaboration.js +1285 -0
- package/packages/happy2-server/dist/routes/collaboration.js.map +1 -0
- package/packages/happy2-server/dist/routes/files.d.ts +9 -0
- package/packages/happy2-server/dist/routes/files.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/files.js +397 -0
- package/packages/happy2-server/dist/routes/files.js.map +1 -0
- package/packages/happy2-server/dist/routes/integrations.d.ts +6 -0
- package/packages/happy2-server/dist/routes/integrations.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/integrations.js +486 -0
- package/packages/happy2-server/dist/routes/integrations.js.map +1 -0
- package/packages/happy2-server/dist/routes/operations.d.ts +5 -0
- package/packages/happy2-server/dist/routes/operations.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/operations.js +588 -0
- package/packages/happy2-server/dist/routes/operations.js.map +1 -0
- package/packages/happy2-server/dist/routes/operations.test.d.ts +2 -0
- package/packages/happy2-server/dist/routes/operations.test.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/operations.test.js +106 -0
- package/packages/happy2-server/dist/routes/operations.test.js.map +1 -0
- package/packages/happy2-server/dist/routes/sync.d.ts +6 -0
- package/packages/happy2-server/dist/routes/sync.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/sync.js +549 -0
- package/packages/happy2-server/dist/routes/sync.js.map +1 -0
- package/packages/happy2-server/dist/routes/workspace.d.ts +5 -0
- package/packages/happy2-server/dist/routes/workspace.d.ts.map +1 -0
- package/packages/happy2-server/dist/routes/workspace.js +240 -0
- package/packages/happy2-server/dist/routes/workspace.js.map +1 -0
- package/packages/happy2-server/dist/runner.d.ts +3 -0
- package/packages/happy2-server/dist/runner.d.ts.map +1 -0
- package/packages/happy2-server/dist/runner.js +30 -0
- package/packages/happy2-server/dist/runner.js.map +1 -0
- package/packages/happy2-server/dist/server.d.ts +32 -0
- package/packages/happy2-server/dist/server.d.ts.map +1 -0
- package/packages/happy2-server/dist/server.js +284 -0
- package/packages/happy2-server/dist/server.js.map +1 -0
- package/packages/happy2-server/dist/standalone.d.ts +13 -0
- package/packages/happy2-server/dist/standalone.d.ts.map +1 -0
- package/packages/happy2-server/dist/standalone.js +99 -0
- package/packages/happy2-server/dist/standalone.js.map +1 -0
- package/packages/happy2-server/dist/web/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2 +0 -0
- package/packages/happy2-server/dist/web/assets/happy-otter-Q2O_g-DT.png +0 -0
- package/packages/happy2-server/dist/web/assets/index-COvbX8JP.css +2 -0
- package/packages/happy2-server/dist/web/assets/index-DdpugxMO.js +57 -0
- package/packages/happy2-server/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/packages/happy2-server/dist/web/assets/onboarding-CRUpq9xl.png +0 -0
- package/packages/happy2-server/dist/web/index.html +13 -0
- package/packages/happy2-server/drizzle/0000_initial.sql +13 -0
- package/packages/happy2-server/drizzle/0001_accounts_profiles_files.sql +42 -0
- package/packages/happy2-server/drizzle/0002_file_visibility_and_uploader.sql +5 -0
- package/packages/happy2-server/drizzle/0003_collaboration.sql +565 -0
- package/packages/happy2-server/drizzle/0004_collaboration_expansion.sql +1099 -0
- package/packages/happy2-server/drizzle/0005_ai_agents.sql +85 -0
- package/packages/happy2-server/drizzle/0006_rig_global_event_queue.sql +10 -0
- package/packages/happy2-server/drizzle/0007_rename_server_identity.sql +3 -0
- package/packages/happy2-server/drizzle/0008_agent_message_streaming.sql +47 -0
- package/packages/happy2-server/drizzle/0009_chat_workspace_binding_lookup.sql +2 -0
- package/packages/happy2-server/drizzle/0010_rig_secret_assignments.sql +21 -0
- package/packages/happy2-server/drizzle/meta/_journal.json +83 -0
- package/packages/happy2-server/happy2.example.toml +104 -0
package/packages/happy2-server/dist/web/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Happy (2)</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DdpugxMO.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-COvbX8JP.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
CREATE TABLE `users` (`id` TEXT PRIMARY KEY NOT NULL, `email` TEXT NOT NULL UNIQUE, `password_hash` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
CREATE TABLE `oidc_identities` (`provider` TEXT NOT NULL, `subject` TEXT NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`provider`, `subject`));
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
CREATE TABLE `auth_sessions` (`id` TEXT PRIMARY KEY NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, `expires_at` TEXT NOT NULL, `last_seen_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, `revoked_at` TEXT);
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
CREATE INDEX `auth_sessions_active_user_idx` ON `auth_sessions` (`user_id`, `expires_at`);
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
CREATE TABLE `auth_session_events` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `session_id` TEXT NOT NULL REFERENCES `auth_sessions`(`id`) ON DELETE CASCADE, `event_type` TEXT NOT NULL, `ip` TEXT, `forwarded_for` TEXT, `location` TEXT, `device` TEXT, `app_version` TEXT, `user_agent` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE TABLE `auth_magic_links` (`token_hash` TEXT PRIMARY KEY NOT NULL, `user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE, `expires_at` TEXT NOT NULL, `consumed_at` TEXT, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
CREATE TABLE `auth_oidc_states` (`state` TEXT PRIMARY KEY NOT NULL, `provider` TEXT NOT NULL, `code_verifier` TEXT NOT NULL, `nonce` TEXT NOT NULL, `redirect_uri` TEXT NOT NULL, `expires_at` TEXT NOT NULL, `created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
ALTER TABLE `users` RENAME TO `accounts`;
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
ALTER TABLE `accounts` ADD COLUMN `active` INTEGER NOT NULL DEFAULT 0;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
ALTER TABLE `oidc_identities` RENAME COLUMN `user_id` TO `account_id`;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
ALTER TABLE `auth_sessions` RENAME COLUMN `user_id` TO `account_id`;
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
ALTER TABLE `auth_magic_links` RENAME COLUMN `user_id` TO `account_id`;
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE TABLE `users` (
|
|
12
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
13
|
+
`account_id` TEXT UNIQUE REFERENCES `accounts`(`id`) ON DELETE CASCADE,
|
|
14
|
+
`kind` TEXT NOT NULL DEFAULT 'human' CHECK (`kind` IN ('human', 'agent')),
|
|
15
|
+
`agent_image_id` TEXT REFERENCES `agent_images`(`id`) ON DELETE RESTRICT,
|
|
16
|
+
`created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
17
|
+
`first_name` TEXT NOT NULL,
|
|
18
|
+
`last_name` TEXT,
|
|
19
|
+
`username` TEXT NOT NULL UNIQUE,
|
|
20
|
+
`email` TEXT,
|
|
21
|
+
`phone` TEXT,
|
|
22
|
+
`photo_file_id` TEXT,
|
|
23
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
CHECK (
|
|
25
|
+
(`kind` = 'human' AND `account_id` IS NOT NULL AND `agent_image_id` IS NULL)
|
|
26
|
+
OR (`kind` = 'agent' AND `account_id` IS NULL AND `agent_image_id` IS NOT NULL)
|
|
27
|
+
)
|
|
28
|
+
);
|
|
29
|
+
--> statement-breakpoint
|
|
30
|
+
CREATE TABLE `files` (
|
|
31
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
32
|
+
`user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
33
|
+
`storage_name` TEXT NOT NULL UNIQUE,
|
|
34
|
+
`content_type` TEXT NOT NULL,
|
|
35
|
+
`size` INTEGER NOT NULL,
|
|
36
|
+
`width` INTEGER NOT NULL,
|
|
37
|
+
`height` INTEGER NOT NULL,
|
|
38
|
+
`thumbhash` TEXT NOT NULL,
|
|
39
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
40
|
+
);
|
|
41
|
+
--> statement-breakpoint
|
|
42
|
+
CREATE INDEX `files_user_idx` ON `files` (`user_id`);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
ALTER TABLE `files` ADD COLUMN `uploaded_by_user_id` TEXT;
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
UPDATE `files` SET `uploaded_by_user_id` = `user_id` WHERE `uploaded_by_user_id` IS NULL;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
ALTER TABLE `files` ADD COLUMN `is_public` INTEGER NOT NULL DEFAULT 0;
|
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
ALTER TABLE `accounts` ADD COLUMN `banned_at` TEXT;
|
|
2
|
+
--> statement-breakpoint
|
|
3
|
+
ALTER TABLE `accounts` ADD COLUMN `deleted_at` TEXT;
|
|
4
|
+
--> statement-breakpoint
|
|
5
|
+
ALTER TABLE `users` ADD COLUMN `title` TEXT;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
ALTER TABLE `users` ADD COLUMN `role` TEXT NOT NULL DEFAULT 'member' CHECK (`role` IN ('member', 'admin'));
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
ALTER TABLE `users` ADD COLUMN `deleted_at` TEXT;
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
ALTER TABLE `users` ADD COLUMN `last_access_at` TEXT;
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
ALTER TABLE `users` ADD COLUMN `sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0);
|
|
14
|
+
--> statement-breakpoint
|
|
15
|
+
ALTER TABLE `files` ADD COLUMN `kind` TEXT NOT NULL DEFAULT 'file' CHECK (`kind` IN ('file', 'photo', 'video', 'gif'));
|
|
16
|
+
--> statement-breakpoint
|
|
17
|
+
ALTER TABLE `files` ADD COLUMN `original_name` TEXT;
|
|
18
|
+
--> statement-breakpoint
|
|
19
|
+
ALTER TABLE `files` ADD COLUMN `duration_ms` INTEGER CHECK (`duration_ms` IS NULL OR `duration_ms` >= 0);
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
UPDATE `files`
|
|
22
|
+
SET `kind` = CASE
|
|
23
|
+
WHEN `content_type` = 'image/gif' THEN 'gif'
|
|
24
|
+
WHEN `content_type` LIKE 'image/%' THEN 'photo'
|
|
25
|
+
WHEN `content_type` LIKE 'video/%' THEN 'video'
|
|
26
|
+
ELSE 'file'
|
|
27
|
+
END;
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE TABLE `server_settings` (
|
|
30
|
+
`id` INTEGER PRIMARY KEY NOT NULL CHECK (`id` = 1),
|
|
31
|
+
`name` TEXT NOT NULL,
|
|
32
|
+
`title` TEXT,
|
|
33
|
+
`photo_file_id` TEXT REFERENCES `files`(`id`) ON DELETE SET NULL,
|
|
34
|
+
`sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
|
|
35
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
36
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
37
|
+
);
|
|
38
|
+
--> statement-breakpoint
|
|
39
|
+
CREATE TABLE `chats` (
|
|
40
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
41
|
+
`kind` TEXT NOT NULL CHECK (`kind` IN ('dm', 'public_channel', 'private_channel')),
|
|
42
|
+
`name` TEXT,
|
|
43
|
+
`slug` TEXT COLLATE NOCASE,
|
|
44
|
+
`topic` TEXT,
|
|
45
|
+
`created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
46
|
+
`dm_key` TEXT UNIQUE,
|
|
47
|
+
`pts` INTEGER NOT NULL DEFAULT 0 CHECK (`pts` >= 0),
|
|
48
|
+
`min_recoverable_pts` INTEGER NOT NULL DEFAULT 0 CHECK (`min_recoverable_pts` >= 0),
|
|
49
|
+
`last_message_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`last_message_sequence` >= 0),
|
|
50
|
+
`last_change_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`last_change_sequence` >= 0),
|
|
51
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
52
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
53
|
+
`deleted_at` TEXT,
|
|
54
|
+
CHECK (
|
|
55
|
+
(`kind` = 'dm' AND `dm_key` IS NOT NULL)
|
|
56
|
+
OR (`kind` != 'dm' AND `dm_key` IS NULL)
|
|
57
|
+
),
|
|
58
|
+
CHECK (
|
|
59
|
+
`kind` = 'dm'
|
|
60
|
+
OR (`name` IS NOT NULL AND length(trim(`name`)) > 0)
|
|
61
|
+
),
|
|
62
|
+
CHECK (`min_recoverable_pts` <= `pts`)
|
|
63
|
+
);
|
|
64
|
+
--> statement-breakpoint
|
|
65
|
+
CREATE UNIQUE INDEX `chats_active_slug_unique_idx`
|
|
66
|
+
ON `chats` (`slug`)
|
|
67
|
+
WHERE `slug` IS NOT NULL AND `deleted_at` IS NULL;
|
|
68
|
+
--> statement-breakpoint
|
|
69
|
+
CREATE INDEX `chats_kind_deleted_idx` ON `chats` (`kind`, `deleted_at`);
|
|
70
|
+
--> statement-breakpoint
|
|
71
|
+
CREATE INDEX `chats_creator_idx` ON `chats` (`created_by_user_id`);
|
|
72
|
+
--> statement-breakpoint
|
|
73
|
+
CREATE INDEX `chats_last_change_sequence_idx` ON `chats` (`last_change_sequence`);
|
|
74
|
+
--> statement-breakpoint
|
|
75
|
+
CREATE TABLE `chat_members` (
|
|
76
|
+
`chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
|
|
77
|
+
`user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
78
|
+
`role` TEXT NOT NULL DEFAULT 'member' CHECK (`role` IN ('owner', 'admin', 'member')),
|
|
79
|
+
`membership_epoch` TEXT NOT NULL CHECK (length(`membership_epoch`) > 0),
|
|
80
|
+
`sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
|
|
81
|
+
`joined_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
82
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
83
|
+
`left_at` TEXT,
|
|
84
|
+
PRIMARY KEY (`chat_id`, `user_id`)
|
|
85
|
+
);
|
|
86
|
+
--> statement-breakpoint
|
|
87
|
+
CREATE INDEX `chat_members_active_user_idx` ON `chat_members` (`user_id`, `left_at`, `chat_id`);
|
|
88
|
+
--> statement-breakpoint
|
|
89
|
+
CREATE INDEX `chat_members_chat_active_idx` ON `chat_members` (`chat_id`, `left_at`, `user_id`);
|
|
90
|
+
--> statement-breakpoint
|
|
91
|
+
CREATE INDEX `chat_members_sync_sequence_idx` ON `chat_members` (`sync_sequence`);
|
|
92
|
+
--> statement-breakpoint
|
|
93
|
+
CREATE TABLE `messages` (
|
|
94
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
95
|
+
`chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
|
|
96
|
+
`sequence` INTEGER NOT NULL CHECK (`sequence` > 0),
|
|
97
|
+
`change_pts` INTEGER NOT NULL CHECK (`change_pts` > 0),
|
|
98
|
+
`sender_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
99
|
+
`kind` TEXT NOT NULL DEFAULT 'user' CHECK (`kind` IN ('user', 'automated')),
|
|
100
|
+
`text` TEXT NOT NULL DEFAULT '',
|
|
101
|
+
`quoted_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
|
|
102
|
+
`thread_root_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
|
|
103
|
+
`forwarded_from_message_id` TEXT REFERENCES `messages`(`id`) ON DELETE SET NULL,
|
|
104
|
+
`expires_at` TEXT,
|
|
105
|
+
`edited_at` TEXT,
|
|
106
|
+
`deleted_at` TEXT,
|
|
107
|
+
`deleted_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
108
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
109
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
110
|
+
UNIQUE (`chat_id`, `sequence`)
|
|
111
|
+
);
|
|
112
|
+
--> statement-breakpoint
|
|
113
|
+
CREATE INDEX `messages_chat_sequence_idx` ON `messages` (`chat_id`, `sequence`);
|
|
114
|
+
--> statement-breakpoint
|
|
115
|
+
CREATE INDEX `messages_chat_change_pts_idx` ON `messages` (`chat_id`, `change_pts`);
|
|
116
|
+
--> statement-breakpoint
|
|
117
|
+
CREATE INDEX `messages_sender_idx` ON `messages` (`sender_user_id`, `created_at`);
|
|
118
|
+
--> statement-breakpoint
|
|
119
|
+
CREATE INDEX `messages_quoted_idx` ON `messages` (`quoted_message_id`);
|
|
120
|
+
--> statement-breakpoint
|
|
121
|
+
CREATE INDEX `messages_thread_root_idx` ON `messages` (`thread_root_message_id`, `sequence`);
|
|
122
|
+
--> statement-breakpoint
|
|
123
|
+
CREATE INDEX `messages_forwarded_from_idx` ON `messages` (`forwarded_from_message_id`);
|
|
124
|
+
--> statement-breakpoint
|
|
125
|
+
CREATE INDEX `messages_expiry_idx` ON `messages` (`expires_at`) WHERE `expires_at` IS NOT NULL AND `deleted_at` IS NULL;
|
|
126
|
+
--> statement-breakpoint
|
|
127
|
+
CREATE TABLE `threads` (
|
|
128
|
+
`root_message_id` TEXT PRIMARY KEY NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
|
|
129
|
+
`chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
|
|
130
|
+
`created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
131
|
+
`reply_count` INTEGER NOT NULL DEFAULT 0 CHECK (`reply_count` >= 0),
|
|
132
|
+
`last_pts` INTEGER NOT NULL DEFAULT 0 CHECK (`last_pts` >= 0),
|
|
133
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
134
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
135
|
+
);
|
|
136
|
+
--> statement-breakpoint
|
|
137
|
+
CREATE INDEX `threads_chat_updated_idx` ON `threads` (`chat_id`, `updated_at`);
|
|
138
|
+
--> statement-breakpoint
|
|
139
|
+
CREATE TABLE `message_attachments` (
|
|
140
|
+
`message_id` TEXT NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
|
|
141
|
+
`file_id` TEXT NOT NULL REFERENCES `files`(`id`) ON DELETE CASCADE,
|
|
142
|
+
`position` INTEGER NOT NULL DEFAULT 0 CHECK (`position` >= 0),
|
|
143
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
144
|
+
PRIMARY KEY (`message_id`, `file_id`),
|
|
145
|
+
UNIQUE (`message_id`, `position`)
|
|
146
|
+
);
|
|
147
|
+
--> statement-breakpoint
|
|
148
|
+
CREATE INDEX `message_attachments_file_idx` ON `message_attachments` (`file_id`, `message_id`);
|
|
149
|
+
--> statement-breakpoint
|
|
150
|
+
CREATE TABLE `custom_emojis` (
|
|
151
|
+
`id` TEXT PRIMARY KEY NOT NULL,
|
|
152
|
+
`name` TEXT NOT NULL COLLATE NOCASE CHECK (length(trim(`name`)) > 0),
|
|
153
|
+
`file_id` TEXT NOT NULL REFERENCES `files`(`id`) ON DELETE CASCADE,
|
|
154
|
+
`created_by_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
155
|
+
`sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
|
|
156
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
157
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
158
|
+
`deleted_at` TEXT
|
|
159
|
+
);
|
|
160
|
+
--> statement-breakpoint
|
|
161
|
+
CREATE UNIQUE INDEX `custom_emojis_active_name_unique_idx`
|
|
162
|
+
ON `custom_emojis` (`name`)
|
|
163
|
+
WHERE `deleted_at` IS NULL;
|
|
164
|
+
--> statement-breakpoint
|
|
165
|
+
CREATE INDEX `custom_emojis_sync_sequence_idx` ON `custom_emojis` (`sync_sequence`);
|
|
166
|
+
--> statement-breakpoint
|
|
167
|
+
CREATE TABLE `reactions` (
|
|
168
|
+
`message_id` TEXT NOT NULL REFERENCES `messages`(`id`) ON DELETE CASCADE,
|
|
169
|
+
`user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
170
|
+
`reaction_key` TEXT NOT NULL CHECK (length(`reaction_key`) > 0),
|
|
171
|
+
`emoji` TEXT,
|
|
172
|
+
`custom_emoji_id` TEXT REFERENCES `custom_emojis`(`id`) ON DELETE CASCADE,
|
|
173
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
174
|
+
PRIMARY KEY (`message_id`, `user_id`, `reaction_key`),
|
|
175
|
+
CHECK (
|
|
176
|
+
(`emoji` IS NOT NULL
|
|
177
|
+
AND length(`emoji`) > 0
|
|
178
|
+
AND `custom_emoji_id` IS NULL
|
|
179
|
+
AND `reaction_key` = 'unicode:' || `emoji`)
|
|
180
|
+
OR (`emoji` IS NULL
|
|
181
|
+
AND `custom_emoji_id` IS NOT NULL
|
|
182
|
+
AND `reaction_key` = 'custom:' || `custom_emoji_id`)
|
|
183
|
+
)
|
|
184
|
+
);
|
|
185
|
+
--> statement-breakpoint
|
|
186
|
+
CREATE INDEX `reactions_message_key_idx` ON `reactions` (`message_id`, `reaction_key`);
|
|
187
|
+
--> statement-breakpoint
|
|
188
|
+
CREATE INDEX `reactions_user_idx` ON `reactions` (`user_id`, `created_at`);
|
|
189
|
+
--> statement-breakpoint
|
|
190
|
+
CREATE TABLE `user_chat_preferences` (
|
|
191
|
+
`user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
192
|
+
`chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
|
|
193
|
+
`starred` INTEGER NOT NULL DEFAULT 0 CHECK (`starred` IN (0, 1)),
|
|
194
|
+
`sort_order` INTEGER NOT NULL DEFAULT 0,
|
|
195
|
+
`sync_sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sync_sequence` >= 0),
|
|
196
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
197
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
198
|
+
PRIMARY KEY (`user_id`, `chat_id`)
|
|
199
|
+
);
|
|
200
|
+
--> statement-breakpoint
|
|
201
|
+
CREATE INDEX `user_chat_preferences_order_idx`
|
|
202
|
+
ON `user_chat_preferences` (`user_id`, `starred`, `sort_order`, `chat_id`);
|
|
203
|
+
--> statement-breakpoint
|
|
204
|
+
CREATE INDEX `user_chat_preferences_sync_sequence_idx`
|
|
205
|
+
ON `user_chat_preferences` (`sync_sequence`);
|
|
206
|
+
--> statement-breakpoint
|
|
207
|
+
CREATE TABLE `server_sync_state` (
|
|
208
|
+
`id` INTEGER PRIMARY KEY NOT NULL CHECK (`id` = 1),
|
|
209
|
+
`generation` TEXT NOT NULL CHECK (length(`generation`) > 0),
|
|
210
|
+
`sequence` INTEGER NOT NULL DEFAULT 0 CHECK (`sequence` >= 0),
|
|
211
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
212
|
+
`updated_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
213
|
+
);
|
|
214
|
+
--> statement-breakpoint
|
|
215
|
+
CREATE TABLE `chat_updates` (
|
|
216
|
+
`chat_id` TEXT NOT NULL REFERENCES `chats`(`id`) ON DELETE CASCADE,
|
|
217
|
+
`pts` INTEGER NOT NULL CHECK (`pts` > 0),
|
|
218
|
+
`pts_count` INTEGER NOT NULL DEFAULT 1 CHECK (`pts_count` > 0),
|
|
219
|
+
`kind` TEXT NOT NULL,
|
|
220
|
+
`entity_id` TEXT,
|
|
221
|
+
`payload_json` TEXT,
|
|
222
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
223
|
+
PRIMARY KEY (`chat_id`, `pts`)
|
|
224
|
+
);
|
|
225
|
+
--> statement-breakpoint
|
|
226
|
+
CREATE INDEX `chat_updates_created_idx` ON `chat_updates` (`created_at`);
|
|
227
|
+
--> statement-breakpoint
|
|
228
|
+
CREATE TABLE `client_mutations` (
|
|
229
|
+
`actor_user_id` TEXT NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
230
|
+
`scope` TEXT NOT NULL,
|
|
231
|
+
`client_mutation_id` TEXT NOT NULL,
|
|
232
|
+
`result_json` TEXT NOT NULL,
|
|
233
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
234
|
+
PRIMARY KEY (`actor_user_id`, `scope`, `client_mutation_id`)
|
|
235
|
+
);
|
|
236
|
+
--> statement-breakpoint
|
|
237
|
+
CREATE INDEX `client_mutations_created_idx` ON `client_mutations` (`created_at`);
|
|
238
|
+
--> statement-breakpoint
|
|
239
|
+
CREATE TABLE `sync_events` (
|
|
240
|
+
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
241
|
+
`sequence` INTEGER NOT NULL CHECK (`sequence` > 0),
|
|
242
|
+
`kind` TEXT NOT NULL,
|
|
243
|
+
`chat_id` TEXT REFERENCES `chats`(`id`) ON DELETE SET NULL,
|
|
244
|
+
`chat_pts` INTEGER CHECK (`chat_pts` IS NULL OR `chat_pts` >= 0),
|
|
245
|
+
`entity_id` TEXT,
|
|
246
|
+
`actor_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
247
|
+
`target_user_id` TEXT REFERENCES `users`(`id`) ON DELETE SET NULL,
|
|
248
|
+
`created_at` TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
249
|
+
);
|
|
250
|
+
--> statement-breakpoint
|
|
251
|
+
CREATE INDEX `sync_events_sequence_idx` ON `sync_events` (`sequence`, `id`);
|
|
252
|
+
--> statement-breakpoint
|
|
253
|
+
CREATE INDEX `sync_events_chat_idx` ON `sync_events` (`chat_id`, `chat_pts`, `id`);
|
|
254
|
+
--> statement-breakpoint
|
|
255
|
+
CREATE INDEX `sync_events_target_idx` ON `sync_events` (`target_user_id`, `sequence`, `id`);
|
|
256
|
+
--> statement-breakpoint
|
|
257
|
+
CREATE INDEX `sync_events_entity_idx` ON `sync_events` (`entity_id`, `sequence`);
|
|
258
|
+
--> statement-breakpoint
|
|
259
|
+
CREATE INDEX `users_sync_sequence_idx` ON `users` (`sync_sequence`);
|
|
260
|
+
--> statement-breakpoint
|
|
261
|
+
CREATE INDEX `users_last_access_idx` ON `users` (`last_access_at`);
|
|
262
|
+
--> statement-breakpoint
|
|
263
|
+
CREATE INDEX `accounts_status_idx` ON `accounts` (`active`, `banned_at`, `deleted_at`);
|
|
264
|
+
--> statement-breakpoint
|
|
265
|
+
INSERT OR IGNORE INTO `server_settings` (`id`, `name`) VALUES (1, 'Happy (2)');
|
|
266
|
+
--> statement-breakpoint
|
|
267
|
+
UPDATE `users`
|
|
268
|
+
SET `role` = 'admin'
|
|
269
|
+
WHERE `id` = (
|
|
270
|
+
SELECT `u`.`id`
|
|
271
|
+
FROM `users` AS `u`
|
|
272
|
+
INNER JOIN `accounts` AS `a` ON `a`.`id` = `u`.`account_id`
|
|
273
|
+
WHERE `a`.`active` = 1
|
|
274
|
+
AND `a`.`banned_at` IS NULL
|
|
275
|
+
AND `a`.`deleted_at` IS NULL
|
|
276
|
+
AND `u`.`deleted_at` IS NULL
|
|
277
|
+
ORDER BY `u`.`created_at`, `u`.`id`
|
|
278
|
+
LIMIT 1
|
|
279
|
+
);
|
|
280
|
+
--> statement-breakpoint
|
|
281
|
+
CREATE VIRTUAL TABLE `messages_fts` USING fts5(
|
|
282
|
+
`text`,
|
|
283
|
+
content = 'messages',
|
|
284
|
+
content_rowid = 'rowid',
|
|
285
|
+
tokenize = 'trigram'
|
|
286
|
+
);
|
|
287
|
+
--> statement-breakpoint
|
|
288
|
+
CREATE TRIGGER `messages_fts_ai`
|
|
289
|
+
AFTER INSERT ON `messages`
|
|
290
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
291
|
+
BEGIN
|
|
292
|
+
INSERT INTO `messages_fts` (`rowid`, `text`)
|
|
293
|
+
VALUES (`new`.`rowid`, COALESCE(`new`.`text`, ''));
|
|
294
|
+
END;
|
|
295
|
+
--> statement-breakpoint
|
|
296
|
+
CREATE TRIGGER `messages_fts_ad`
|
|
297
|
+
AFTER DELETE ON `messages`
|
|
298
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
299
|
+
BEGIN
|
|
300
|
+
INSERT INTO `messages_fts` (`messages_fts`, `rowid`, `text`)
|
|
301
|
+
VALUES ('delete', `old`.`rowid`, COALESCE(`old`.`text`, ''));
|
|
302
|
+
END;
|
|
303
|
+
--> statement-breakpoint
|
|
304
|
+
CREATE TRIGGER `messages_fts_au_delete`
|
|
305
|
+
AFTER UPDATE ON `messages`
|
|
306
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
307
|
+
BEGIN
|
|
308
|
+
INSERT INTO `messages_fts` (`messages_fts`, `rowid`, `text`)
|
|
309
|
+
VALUES ('delete', `old`.`rowid`, COALESCE(`old`.`text`, ''));
|
|
310
|
+
END;
|
|
311
|
+
--> statement-breakpoint
|
|
312
|
+
CREATE TRIGGER `messages_fts_au_insert`
|
|
313
|
+
AFTER UPDATE ON `messages`
|
|
314
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
315
|
+
BEGIN
|
|
316
|
+
INSERT INTO `messages_fts` (`rowid`, `text`)
|
|
317
|
+
VALUES (`new`.`rowid`, COALESCE(`new`.`text`, ''));
|
|
318
|
+
END;
|
|
319
|
+
--> statement-breakpoint
|
|
320
|
+
INSERT INTO `messages_fts` (`rowid`, `text`)
|
|
321
|
+
SELECT `rowid`, COALESCE(`text`, '')
|
|
322
|
+
FROM `messages`
|
|
323
|
+
WHERE `deleted_at` IS NULL;
|
|
324
|
+
--> statement-breakpoint
|
|
325
|
+
CREATE VIRTUAL TABLE `chats_fts` USING fts5(
|
|
326
|
+
`name`,
|
|
327
|
+
`slug`,
|
|
328
|
+
`topic`,
|
|
329
|
+
content = 'chats',
|
|
330
|
+
content_rowid = 'rowid',
|
|
331
|
+
tokenize = 'trigram'
|
|
332
|
+
);
|
|
333
|
+
--> statement-breakpoint
|
|
334
|
+
CREATE TRIGGER `chats_fts_ai`
|
|
335
|
+
AFTER INSERT ON `chats`
|
|
336
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
337
|
+
BEGIN
|
|
338
|
+
INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
|
|
339
|
+
VALUES (
|
|
340
|
+
`new`.`rowid`,
|
|
341
|
+
COALESCE(`new`.`name`, ''),
|
|
342
|
+
COALESCE(`new`.`slug`, ''),
|
|
343
|
+
COALESCE(`new`.`topic`, '')
|
|
344
|
+
);
|
|
345
|
+
END;
|
|
346
|
+
--> statement-breakpoint
|
|
347
|
+
CREATE TRIGGER `chats_fts_ad`
|
|
348
|
+
AFTER DELETE ON `chats`
|
|
349
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
350
|
+
BEGIN
|
|
351
|
+
INSERT INTO `chats_fts` (`chats_fts`, `rowid`, `name`, `slug`, `topic`)
|
|
352
|
+
VALUES (
|
|
353
|
+
'delete',
|
|
354
|
+
`old`.`rowid`,
|
|
355
|
+
COALESCE(`old`.`name`, ''),
|
|
356
|
+
COALESCE(`old`.`slug`, ''),
|
|
357
|
+
COALESCE(`old`.`topic`, '')
|
|
358
|
+
);
|
|
359
|
+
END;
|
|
360
|
+
--> statement-breakpoint
|
|
361
|
+
CREATE TRIGGER `chats_fts_au_delete`
|
|
362
|
+
AFTER UPDATE ON `chats`
|
|
363
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
364
|
+
BEGIN
|
|
365
|
+
INSERT INTO `chats_fts` (`chats_fts`, `rowid`, `name`, `slug`, `topic`)
|
|
366
|
+
VALUES (
|
|
367
|
+
'delete',
|
|
368
|
+
`old`.`rowid`,
|
|
369
|
+
COALESCE(`old`.`name`, ''),
|
|
370
|
+
COALESCE(`old`.`slug`, ''),
|
|
371
|
+
COALESCE(`old`.`topic`, '')
|
|
372
|
+
);
|
|
373
|
+
END;
|
|
374
|
+
--> statement-breakpoint
|
|
375
|
+
CREATE TRIGGER `chats_fts_au_insert`
|
|
376
|
+
AFTER UPDATE ON `chats`
|
|
377
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
378
|
+
BEGIN
|
|
379
|
+
INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
|
|
380
|
+
VALUES (
|
|
381
|
+
`new`.`rowid`,
|
|
382
|
+
COALESCE(`new`.`name`, ''),
|
|
383
|
+
COALESCE(`new`.`slug`, ''),
|
|
384
|
+
COALESCE(`new`.`topic`, '')
|
|
385
|
+
);
|
|
386
|
+
END;
|
|
387
|
+
--> statement-breakpoint
|
|
388
|
+
INSERT INTO `chats_fts` (`rowid`, `name`, `slug`, `topic`)
|
|
389
|
+
SELECT
|
|
390
|
+
`rowid`,
|
|
391
|
+
COALESCE(`name`, ''),
|
|
392
|
+
COALESCE(`slug`, ''),
|
|
393
|
+
COALESCE(`topic`, '')
|
|
394
|
+
FROM `chats`
|
|
395
|
+
WHERE `deleted_at` IS NULL;
|
|
396
|
+
--> statement-breakpoint
|
|
397
|
+
CREATE VIRTUAL TABLE `users_fts` USING fts5(
|
|
398
|
+
`first_name`,
|
|
399
|
+
`last_name`,
|
|
400
|
+
`username`,
|
|
401
|
+
`title`,
|
|
402
|
+
content = 'users',
|
|
403
|
+
content_rowid = 'rowid',
|
|
404
|
+
tokenize = 'trigram'
|
|
405
|
+
);
|
|
406
|
+
--> statement-breakpoint
|
|
407
|
+
CREATE TRIGGER `users_fts_ai`
|
|
408
|
+
AFTER INSERT ON `users`
|
|
409
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
410
|
+
AND EXISTS (
|
|
411
|
+
SELECT 1
|
|
412
|
+
FROM `accounts`
|
|
413
|
+
WHERE `id` = `new`.`account_id`
|
|
414
|
+
AND `active` = 1
|
|
415
|
+
AND `banned_at` IS NULL
|
|
416
|
+
AND `deleted_at` IS NULL
|
|
417
|
+
)
|
|
418
|
+
BEGIN
|
|
419
|
+
INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
420
|
+
VALUES (
|
|
421
|
+
`new`.`rowid`,
|
|
422
|
+
COALESCE(`new`.`first_name`, ''),
|
|
423
|
+
COALESCE(`new`.`last_name`, ''),
|
|
424
|
+
COALESCE(`new`.`username`, ''),
|
|
425
|
+
COALESCE(`new`.`title`, '')
|
|
426
|
+
);
|
|
427
|
+
END;
|
|
428
|
+
--> statement-breakpoint
|
|
429
|
+
CREATE TRIGGER `users_fts_ad`
|
|
430
|
+
AFTER DELETE ON `users`
|
|
431
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
432
|
+
AND EXISTS (
|
|
433
|
+
SELECT 1
|
|
434
|
+
FROM `accounts`
|
|
435
|
+
WHERE `id` = `old`.`account_id`
|
|
436
|
+
AND `active` = 1
|
|
437
|
+
AND `banned_at` IS NULL
|
|
438
|
+
AND `deleted_at` IS NULL
|
|
439
|
+
)
|
|
440
|
+
BEGIN
|
|
441
|
+
INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
442
|
+
VALUES (
|
|
443
|
+
'delete',
|
|
444
|
+
`old`.`rowid`,
|
|
445
|
+
COALESCE(`old`.`first_name`, ''),
|
|
446
|
+
COALESCE(`old`.`last_name`, ''),
|
|
447
|
+
COALESCE(`old`.`username`, ''),
|
|
448
|
+
COALESCE(`old`.`title`, '')
|
|
449
|
+
);
|
|
450
|
+
END;
|
|
451
|
+
--> statement-breakpoint
|
|
452
|
+
CREATE TRIGGER `users_fts_au_delete`
|
|
453
|
+
AFTER UPDATE ON `users`
|
|
454
|
+
WHEN `old`.`deleted_at` IS NULL
|
|
455
|
+
AND EXISTS (
|
|
456
|
+
SELECT 1
|
|
457
|
+
FROM `accounts`
|
|
458
|
+
WHERE `id` = `old`.`account_id`
|
|
459
|
+
AND `active` = 1
|
|
460
|
+
AND `banned_at` IS NULL
|
|
461
|
+
AND `deleted_at` IS NULL
|
|
462
|
+
)
|
|
463
|
+
BEGIN
|
|
464
|
+
INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
465
|
+
VALUES (
|
|
466
|
+
'delete',
|
|
467
|
+
`old`.`rowid`,
|
|
468
|
+
COALESCE(`old`.`first_name`, ''),
|
|
469
|
+
COALESCE(`old`.`last_name`, ''),
|
|
470
|
+
COALESCE(`old`.`username`, ''),
|
|
471
|
+
COALESCE(`old`.`title`, '')
|
|
472
|
+
);
|
|
473
|
+
END;
|
|
474
|
+
--> statement-breakpoint
|
|
475
|
+
CREATE TRIGGER `users_fts_au_insert`
|
|
476
|
+
AFTER UPDATE ON `users`
|
|
477
|
+
WHEN `new`.`deleted_at` IS NULL
|
|
478
|
+
AND EXISTS (
|
|
479
|
+
SELECT 1
|
|
480
|
+
FROM `accounts`
|
|
481
|
+
WHERE `id` = `new`.`account_id`
|
|
482
|
+
AND `active` = 1
|
|
483
|
+
AND `banned_at` IS NULL
|
|
484
|
+
AND `deleted_at` IS NULL
|
|
485
|
+
)
|
|
486
|
+
BEGIN
|
|
487
|
+
INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
488
|
+
VALUES (
|
|
489
|
+
`new`.`rowid`,
|
|
490
|
+
COALESCE(`new`.`first_name`, ''),
|
|
491
|
+
COALESCE(`new`.`last_name`, ''),
|
|
492
|
+
COALESCE(`new`.`username`, ''),
|
|
493
|
+
COALESCE(`new`.`title`, '')
|
|
494
|
+
);
|
|
495
|
+
END;
|
|
496
|
+
--> statement-breakpoint
|
|
497
|
+
CREATE TRIGGER `accounts_users_fts_bu`
|
|
498
|
+
BEFORE UPDATE OF `active`, `banned_at`, `deleted_at` ON `accounts`
|
|
499
|
+
WHEN `old`.`active` = 1
|
|
500
|
+
AND `old`.`banned_at` IS NULL
|
|
501
|
+
AND `old`.`deleted_at` IS NULL
|
|
502
|
+
BEGIN
|
|
503
|
+
INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
504
|
+
SELECT
|
|
505
|
+
'delete',
|
|
506
|
+
`u`.`rowid`,
|
|
507
|
+
COALESCE(`u`.`first_name`, ''),
|
|
508
|
+
COALESCE(`u`.`last_name`, ''),
|
|
509
|
+
COALESCE(`u`.`username`, ''),
|
|
510
|
+
COALESCE(`u`.`title`, '')
|
|
511
|
+
FROM `users` AS `u`
|
|
512
|
+
WHERE `u`.`account_id` = `old`.`id`
|
|
513
|
+
AND `u`.`deleted_at` IS NULL;
|
|
514
|
+
END;
|
|
515
|
+
--> statement-breakpoint
|
|
516
|
+
CREATE TRIGGER `accounts_users_fts_au`
|
|
517
|
+
AFTER UPDATE OF `active`, `banned_at`, `deleted_at` ON `accounts`
|
|
518
|
+
WHEN `new`.`active` = 1
|
|
519
|
+
AND `new`.`banned_at` IS NULL
|
|
520
|
+
AND `new`.`deleted_at` IS NULL
|
|
521
|
+
BEGIN
|
|
522
|
+
INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
523
|
+
SELECT
|
|
524
|
+
`u`.`rowid`,
|
|
525
|
+
COALESCE(`u`.`first_name`, ''),
|
|
526
|
+
COALESCE(`u`.`last_name`, ''),
|
|
527
|
+
COALESCE(`u`.`username`, ''),
|
|
528
|
+
COALESCE(`u`.`title`, '')
|
|
529
|
+
FROM `users` AS `u`
|
|
530
|
+
WHERE `u`.`account_id` = `new`.`id`
|
|
531
|
+
AND `u`.`deleted_at` IS NULL;
|
|
532
|
+
END;
|
|
533
|
+
--> statement-breakpoint
|
|
534
|
+
CREATE TRIGGER `accounts_users_fts_bd`
|
|
535
|
+
BEFORE DELETE ON `accounts`
|
|
536
|
+
WHEN `old`.`active` = 1
|
|
537
|
+
AND `old`.`banned_at` IS NULL
|
|
538
|
+
AND `old`.`deleted_at` IS NULL
|
|
539
|
+
BEGIN
|
|
540
|
+
INSERT INTO `users_fts` (`users_fts`, `rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
541
|
+
SELECT
|
|
542
|
+
'delete',
|
|
543
|
+
`u`.`rowid`,
|
|
544
|
+
COALESCE(`u`.`first_name`, ''),
|
|
545
|
+
COALESCE(`u`.`last_name`, ''),
|
|
546
|
+
COALESCE(`u`.`username`, ''),
|
|
547
|
+
COALESCE(`u`.`title`, '')
|
|
548
|
+
FROM `users` AS `u`
|
|
549
|
+
WHERE `u`.`account_id` = `old`.`id`
|
|
550
|
+
AND `u`.`deleted_at` IS NULL;
|
|
551
|
+
END;
|
|
552
|
+
--> statement-breakpoint
|
|
553
|
+
INSERT INTO `users_fts` (`rowid`, `first_name`, `last_name`, `username`, `title`)
|
|
554
|
+
SELECT
|
|
555
|
+
`u`.`rowid`,
|
|
556
|
+
COALESCE(`u`.`first_name`, ''),
|
|
557
|
+
COALESCE(`u`.`last_name`, ''),
|
|
558
|
+
COALESCE(`u`.`username`, ''),
|
|
559
|
+
COALESCE(`u`.`title`, '')
|
|
560
|
+
FROM `users` AS `u`
|
|
561
|
+
INNER JOIN `accounts` AS `a` ON `a`.`id` = `u`.`account_id`
|
|
562
|
+
WHERE `u`.`deleted_at` IS NULL
|
|
563
|
+
AND `a`.`active` = 1
|
|
564
|
+
AND `a`.`banned_at` IS NULL
|
|
565
|
+
AND `a`.`deleted_at` IS NULL;
|