@friggframework/core 2.0.0-next.8 → 2.0.0-next.81
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/CLAUDE.md +702 -0
- package/README.md +959 -50
- package/application/commands/README.md +451 -0
- package/application/commands/credential-commands.js +245 -0
- package/application/commands/entity-commands.js +336 -0
- package/application/commands/integration-commands.js +210 -0
- package/application/commands/scheduler-commands.js +263 -0
- package/application/commands/user-commands.js +283 -0
- package/application/index.js +73 -0
- package/assertions/index.js +0 -3
- package/core/CLAUDE.md +690 -0
- package/core/Worker.js +60 -24
- package/core/create-handler.js +79 -8
- package/credential/repositories/credential-repository-documentdb.js +304 -0
- package/credential/repositories/credential-repository-factory.js +54 -0
- package/credential/repositories/credential-repository-interface.js +98 -0
- package/credential/repositories/credential-repository-mongo.js +269 -0
- package/credential/repositories/credential-repository-postgres.js +287 -0
- package/credential/repositories/credential-repository.js +300 -0
- package/credential/use-cases/get-credential-for-user.js +25 -0
- package/credential/use-cases/update-authentication-status.js +15 -0
- package/database/MONGODB_TRANSACTION_FIX.md +198 -0
- package/database/adapters/lambda-invoker.js +97 -0
- package/database/config.js +154 -0
- package/database/documentdb-encryption-service.js +330 -0
- package/database/documentdb-utils.js +136 -0
- package/database/encryption/README.md +839 -0
- package/database/encryption/documentdb-encryption-service.md +3575 -0
- package/database/encryption/encryption-schema-registry.js +268 -0
- package/database/encryption/field-encryption-service.js +226 -0
- package/database/encryption/logger.js +79 -0
- package/database/encryption/prisma-encryption-extension.js +222 -0
- package/database/index.js +21 -21
- package/database/prisma.js +182 -0
- package/database/repositories/health-check-repository-documentdb.js +138 -0
- package/database/repositories/health-check-repository-factory.js +48 -0
- package/database/repositories/health-check-repository-interface.js +82 -0
- package/database/repositories/health-check-repository-mongodb.js +89 -0
- package/database/repositories/health-check-repository-postgres.js +82 -0
- package/database/repositories/migration-status-repository-s3.js +137 -0
- package/database/use-cases/check-database-health-use-case.js +29 -0
- package/database/use-cases/check-database-state-use-case.js +81 -0
- package/database/use-cases/check-encryption-health-use-case.js +83 -0
- package/database/use-cases/get-database-state-via-worker-use-case.js +61 -0
- package/database/use-cases/get-migration-status-use-case.js +93 -0
- package/database/use-cases/run-database-migration-use-case.js +139 -0
- package/database/use-cases/test-encryption-use-case.js +253 -0
- package/database/use-cases/trigger-database-migration-use-case.js +157 -0
- package/database/utils/mongodb-collection-utils.js +94 -0
- package/database/utils/mongodb-schema-init.js +108 -0
- package/database/utils/prisma-runner.js +477 -0
- package/database/utils/prisma-schema-parser.js +182 -0
- package/docs/PROCESS_MANAGEMENT_QUEUE_SPEC.md +517 -0
- package/encrypt/Cryptor.js +34 -168
- package/encrypt/index.js +1 -2
- package/errors/client-safe-error.js +26 -0
- package/errors/fetch-error.js +15 -7
- package/errors/index.js +2 -0
- package/generated/prisma-mongodb/client.d.ts +1 -0
- package/generated/prisma-mongodb/client.js +4 -0
- package/generated/prisma-mongodb/default.d.ts +1 -0
- package/generated/prisma-mongodb/default.js +4 -0
- package/generated/prisma-mongodb/edge.d.ts +1 -0
- package/generated/prisma-mongodb/edge.js +335 -0
- package/generated/prisma-mongodb/index-browser.js +317 -0
- package/generated/prisma-mongodb/index.d.ts +22955 -0
- package/generated/prisma-mongodb/index.js +360 -0
- package/generated/prisma-mongodb/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
- package/generated/prisma-mongodb/libquery_engine-rhel-openssl-3.0.x.so.node +0 -0
- package/generated/prisma-mongodb/package.json +183 -0
- package/generated/prisma-mongodb/runtime/edge-esm.js +34 -0
- package/generated/prisma-mongodb/runtime/edge.js +34 -0
- package/generated/prisma-mongodb/runtime/index-browser.d.ts +370 -0
- package/generated/prisma-mongodb/runtime/index-browser.js +16 -0
- package/generated/prisma-mongodb/runtime/library.d.ts +3977 -0
- package/generated/prisma-mongodb/runtime/library.js +146 -0
- package/generated/prisma-mongodb/runtime/react-native.js +83 -0
- package/generated/prisma-mongodb/runtime/wasm-compiler-edge.js +84 -0
- package/generated/prisma-mongodb/runtime/wasm-engine-edge.js +36 -0
- package/generated/prisma-mongodb/schema.prisma +368 -0
- package/generated/prisma-mongodb/wasm-edge-light-loader.mjs +4 -0
- package/generated/prisma-mongodb/wasm-worker-loader.mjs +4 -0
- package/generated/prisma-mongodb/wasm.d.ts +1 -0
- package/generated/prisma-mongodb/wasm.js +342 -0
- package/generated/prisma-postgresql/client.d.ts +1 -0
- package/generated/prisma-postgresql/client.js +4 -0
- package/generated/prisma-postgresql/default.d.ts +1 -0
- package/generated/prisma-postgresql/default.js +4 -0
- package/generated/prisma-postgresql/edge.d.ts +1 -0
- package/generated/prisma-postgresql/edge.js +357 -0
- package/generated/prisma-postgresql/index-browser.js +339 -0
- package/generated/prisma-postgresql/index.d.ts +25135 -0
- package/generated/prisma-postgresql/index.js +382 -0
- package/generated/prisma-postgresql/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
- package/generated/prisma-postgresql/libquery_engine-rhel-openssl-3.0.x.so.node +0 -0
- package/generated/prisma-postgresql/package.json +183 -0
- package/generated/prisma-postgresql/query_engine_bg.js +2 -0
- package/generated/prisma-postgresql/query_engine_bg.wasm +0 -0
- package/generated/prisma-postgresql/runtime/edge-esm.js +34 -0
- package/generated/prisma-postgresql/runtime/edge.js +34 -0
- package/generated/prisma-postgresql/runtime/index-browser.d.ts +370 -0
- package/generated/prisma-postgresql/runtime/index-browser.js +16 -0
- package/generated/prisma-postgresql/runtime/library.d.ts +3977 -0
- package/generated/prisma-postgresql/runtime/library.js +146 -0
- package/generated/prisma-postgresql/runtime/react-native.js +83 -0
- package/generated/prisma-postgresql/runtime/wasm-compiler-edge.js +84 -0
- package/generated/prisma-postgresql/runtime/wasm-engine-edge.js +36 -0
- package/generated/prisma-postgresql/schema.prisma +351 -0
- package/generated/prisma-postgresql/wasm-edge-light-loader.mjs +4 -0
- package/generated/prisma-postgresql/wasm-worker-loader.mjs +4 -0
- package/generated/prisma-postgresql/wasm.d.ts +1 -0
- package/generated/prisma-postgresql/wasm.js +364 -0
- package/handlers/WEBHOOKS.md +653 -0
- package/handlers/app-definition-loader.js +38 -0
- package/handlers/app-handler-helpers.js +57 -0
- package/handlers/backend-utils.js +262 -0
- package/handlers/database-migration-handler.js +227 -0
- package/handlers/integration-event-dispatcher.js +54 -0
- package/handlers/routers/HEALTHCHECK.md +342 -0
- package/handlers/routers/auth.js +15 -0
- package/handlers/routers/db-migration.handler.js +29 -0
- package/handlers/routers/db-migration.js +326 -0
- package/handlers/routers/health.js +516 -0
- package/handlers/routers/integration-defined-routers.js +45 -0
- package/handlers/routers/integration-webhook-routers.js +67 -0
- package/handlers/routers/user.js +63 -0
- package/handlers/routers/websocket.js +57 -0
- package/handlers/use-cases/check-external-apis-health-use-case.js +81 -0
- package/handlers/use-cases/check-integrations-health-use-case.js +44 -0
- package/handlers/workers/db-migration.js +352 -0
- package/handlers/workers/dlq-processor.js +63 -0
- package/handlers/workers/integration-defined-workers.js +23 -0
- package/index.js +82 -46
- package/infrastructure/scheduler/eventbridge-scheduler-adapter.js +184 -0
- package/infrastructure/scheduler/index.js +33 -0
- package/infrastructure/scheduler/mock-scheduler-adapter.js +143 -0
- package/infrastructure/scheduler/scheduler-service-factory.js +73 -0
- package/infrastructure/scheduler/scheduler-service-interface.js +47 -0
- package/integrations/WEBHOOK-QUICKSTART.md +151 -0
- package/integrations/index.js +12 -10
- package/integrations/integration-base.js +364 -55
- package/integrations/integration-router.js +376 -179
- package/integrations/options.js +1 -1
- package/integrations/repositories/integration-mapping-repository-documentdb.js +280 -0
- package/integrations/repositories/integration-mapping-repository-factory.js +57 -0
- package/integrations/repositories/integration-mapping-repository-interface.js +106 -0
- package/integrations/repositories/integration-mapping-repository-mongo.js +161 -0
- package/integrations/repositories/integration-mapping-repository-postgres.js +227 -0
- package/integrations/repositories/integration-mapping-repository.js +156 -0
- package/integrations/repositories/integration-repository-documentdb.js +219 -0
- package/integrations/repositories/integration-repository-factory.js +51 -0
- package/integrations/repositories/integration-repository-interface.js +144 -0
- package/integrations/repositories/integration-repository-mongo.js +330 -0
- package/integrations/repositories/integration-repository-postgres.js +385 -0
- package/integrations/repositories/process-repository-documentdb.js +311 -0
- package/integrations/repositories/process-repository-factory.js +53 -0
- package/integrations/repositories/process-repository-interface.js +136 -0
- package/integrations/repositories/process-repository-mongo.js +262 -0
- package/integrations/repositories/process-repository-postgres.js +380 -0
- package/integrations/repositories/process-update-ops-shared.js +112 -0
- package/integrations/tests/doubles/config-capturing-integration.js +81 -0
- package/integrations/tests/doubles/dummy-integration-class.js +105 -0
- package/integrations/tests/doubles/test-integration-repository.js +112 -0
- package/integrations/use-cases/create-integration.js +83 -0
- package/integrations/use-cases/create-process.js +128 -0
- package/integrations/use-cases/delete-integration-for-user.js +101 -0
- package/integrations/use-cases/find-integration-context-by-external-entity-id.js +72 -0
- package/integrations/use-cases/get-integration-for-user.js +78 -0
- package/integrations/use-cases/get-integration-instance-by-definition.js +67 -0
- package/integrations/use-cases/get-integration-instance.js +83 -0
- package/integrations/use-cases/get-integrations-for-user.js +88 -0
- package/integrations/use-cases/get-possible-integrations.js +27 -0
- package/integrations/use-cases/get-process.js +87 -0
- package/integrations/use-cases/index.js +19 -0
- package/integrations/use-cases/load-integration-context.js +71 -0
- package/integrations/use-cases/update-integration-messages.js +44 -0
- package/integrations/use-cases/update-integration-status.js +32 -0
- package/integrations/use-cases/update-integration.js +92 -0
- package/integrations/use-cases/update-process-metrics.js +205 -0
- package/integrations/use-cases/update-process-state.js +158 -0
- package/integrations/utils/map-integration-dto.js +37 -0
- package/jest-global-setup-noop.js +3 -0
- package/jest-global-teardown-noop.js +3 -0
- package/logs/logger.js +0 -4
- package/{module-plugin → modules}/index.js +0 -10
- package/modules/module-factory.js +56 -0
- package/modules/module.js +258 -0
- package/modules/repositories/module-repository-documentdb.js +335 -0
- package/modules/repositories/module-repository-factory.js +40 -0
- package/modules/repositories/module-repository-interface.js +129 -0
- package/modules/repositories/module-repository-mongo.js +408 -0
- package/modules/repositories/module-repository-postgres.js +453 -0
- package/modules/repositories/module-repository.js +345 -0
- package/modules/requester/api-key.js +52 -0
- package/modules/requester/oauth-2.js +396 -0
- package/modules/requester/requester.js +275 -0
- package/{module-plugin → modules}/test/mock-api/api.js +8 -3
- package/{module-plugin → modules}/test/mock-api/definition.js +14 -10
- package/modules/tests/doubles/test-module-factory.js +16 -0
- package/modules/tests/doubles/test-module-repository.js +39 -0
- package/modules/use-cases/get-entities-for-user.js +32 -0
- package/modules/use-cases/get-entity-options-by-id.js +71 -0
- package/modules/use-cases/get-entity-options-by-type.js +34 -0
- package/modules/use-cases/get-module-instance-from-type.js +34 -0
- package/modules/use-cases/get-module.js +74 -0
- package/modules/use-cases/process-authorization-callback.js +177 -0
- package/modules/use-cases/refresh-entity-options.js +72 -0
- package/modules/use-cases/test-module-auth.js +72 -0
- package/modules/utils/map-module-dto.js +18 -0
- package/package.json +82 -50
- package/prisma-mongodb/schema.prisma +368 -0
- package/prisma-postgresql/migrations/20250930193005_init/migration.sql +315 -0
- package/prisma-postgresql/migrations/20251006135218_init/migration.sql +9 -0
- package/prisma-postgresql/migrations/20251010000000_remove_unused_entity_reference_map/migration.sql +3 -0
- package/prisma-postgresql/migrations/20251112195422_update_user_unique_constraints/migration.sql +25 -0
- package/prisma-postgresql/migrations/20260422120000_add_entity_data_column/migration.sql +10 -0
- package/prisma-postgresql/migrations/20260422120001_create_process_table/migration.sql +48 -0
- package/prisma-postgresql/migrations/migration_lock.toml +3 -0
- package/prisma-postgresql/schema.prisma +351 -0
- package/queues/queuer-util.js +103 -21
- package/syncs/manager.js +468 -443
- package/syncs/repositories/sync-repository-documentdb.js +240 -0
- package/syncs/repositories/sync-repository-factory.js +43 -0
- package/syncs/repositories/sync-repository-interface.js +109 -0
- package/syncs/repositories/sync-repository-mongo.js +239 -0
- package/syncs/repositories/sync-repository-postgres.js +319 -0
- package/syncs/sync.js +0 -1
- package/token/repositories/token-repository-documentdb.js +137 -0
- package/token/repositories/token-repository-factory.js +40 -0
- package/token/repositories/token-repository-interface.js +131 -0
- package/token/repositories/token-repository-mongo.js +219 -0
- package/token/repositories/token-repository-postgres.js +264 -0
- package/token/repositories/token-repository.js +219 -0
- package/types/associations/index.d.ts +0 -17
- package/types/core/index.d.ts +12 -4
- package/types/database/index.d.ts +10 -2
- package/types/encrypt/index.d.ts +5 -3
- package/types/integrations/index.d.ts +3 -8
- package/types/module-plugin/index.d.ts +17 -69
- package/types/syncs/index.d.ts +0 -17
- package/user/repositories/user-repository-documentdb.js +441 -0
- package/user/repositories/user-repository-factory.js +52 -0
- package/user/repositories/user-repository-interface.js +201 -0
- package/user/repositories/user-repository-mongo.js +308 -0
- package/user/repositories/user-repository-postgres.js +360 -0
- package/user/tests/doubles/test-user-repository.js +72 -0
- package/user/use-cases/authenticate-user.js +127 -0
- package/user/use-cases/authenticate-with-shared-secret.js +48 -0
- package/user/use-cases/create-individual-user.js +61 -0
- package/user/use-cases/create-organization-user.js +47 -0
- package/user/use-cases/create-token-for-user-id.js +30 -0
- package/user/use-cases/get-user-from-adopter-jwt.js +149 -0
- package/user/use-cases/get-user-from-bearer-token.js +77 -0
- package/user/use-cases/get-user-from-x-frigg-headers.js +132 -0
- package/user/use-cases/login-user.js +122 -0
- package/user/user.js +125 -0
- package/utils/backend-path.js +38 -0
- package/utils/index.js +6 -0
- package/websocket/repositories/websocket-connection-repository-documentdb.js +119 -0
- package/websocket/repositories/websocket-connection-repository-factory.js +44 -0
- package/websocket/repositories/websocket-connection-repository-interface.js +106 -0
- package/websocket/repositories/websocket-connection-repository-mongo.js +156 -0
- package/websocket/repositories/websocket-connection-repository-postgres.js +196 -0
- package/websocket/repositories/websocket-connection-repository.js +161 -0
- package/assertions/is-equal.js +0 -17
- package/associations/model.js +0 -54
- package/database/models/IndividualUser.js +0 -76
- package/database/models/OrganizationUser.js +0 -29
- package/database/models/State.js +0 -9
- package/database/models/Token.js +0 -70
- package/database/models/UserModel.js +0 -7
- package/database/models/WebsocketConnection.js +0 -49
- package/database/mongo.js +0 -45
- package/database/mongoose.js +0 -5
- package/encrypt/Cryptor.test.js +0 -32
- package/encrypt/encrypt.js +0 -132
- package/encrypt/encrypt.test.js +0 -1069
- package/encrypt/test-encrypt.js +0 -107
- package/errors/base-error.test.js +0 -32
- package/errors/fetch-error.test.js +0 -79
- package/errors/halt-error.test.js +0 -11
- package/errors/validation-errors.test.js +0 -120
- package/integrations/create-frigg-backend.js +0 -31
- package/integrations/integration-factory.js +0 -251
- package/integrations/integration-mapping.js +0 -43
- package/integrations/integration-model.js +0 -46
- package/integrations/integration-user.js +0 -144
- package/integrations/test/integration-base.test.js +0 -144
- package/lambda/TimeoutCatcher.test.js +0 -68
- package/logs/logger.test.js +0 -76
- package/module-plugin/auther.js +0 -393
- package/module-plugin/credential.js +0 -22
- package/module-plugin/entity-manager.js +0 -70
- package/module-plugin/entity.js +0 -46
- package/module-plugin/manager.js +0 -169
- package/module-plugin/module-factory.js +0 -61
- package/module-plugin/requester/api-key.js +0 -36
- package/module-plugin/requester/oauth-2.js +0 -219
- package/module-plugin/requester/requester.js +0 -165
- package/module-plugin/requester/requester.test.js +0 -28
- package/module-plugin/test/auther.test.js +0 -97
- package/syncs/model.js +0 -62
- /package/{module-plugin → modules}/ModuleConstants.js +0 -0
- /package/{module-plugin → modules}/requester/basic.js +0 -0
- /package/{module-plugin → modules}/test/mock-api/mocks/hubspot.js +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "UserType" AS ENUM ('INDIVIDUAL', 'ORGANIZATION');
|
|
3
|
+
|
|
4
|
+
-- CreateEnum
|
|
5
|
+
CREATE TYPE "IntegrationStatus" AS ENUM ('ENABLED', 'NEEDS_CONFIG', 'PROCESSING', 'DISABLED', 'ERROR');
|
|
6
|
+
|
|
7
|
+
-- CreateEnum
|
|
8
|
+
CREATE TYPE "AssociationType" AS ENUM ('ONE_TO_MANY', 'ONE_TO_ONE', 'MANY_TO_ONE');
|
|
9
|
+
|
|
10
|
+
-- CreateTable
|
|
11
|
+
CREATE TABLE "User" (
|
|
12
|
+
"id" SERIAL NOT NULL,
|
|
13
|
+
"type" "UserType" NOT NULL,
|
|
14
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
16
|
+
"email" TEXT,
|
|
17
|
+
"username" TEXT,
|
|
18
|
+
"hashword" TEXT,
|
|
19
|
+
"appUserId" TEXT,
|
|
20
|
+
"organizationId" INTEGER,
|
|
21
|
+
"appOrgId" TEXT,
|
|
22
|
+
"name" TEXT,
|
|
23
|
+
|
|
24
|
+
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
-- CreateTable
|
|
28
|
+
CREATE TABLE "Token" (
|
|
29
|
+
"id" SERIAL NOT NULL,
|
|
30
|
+
"token" TEXT NOT NULL,
|
|
31
|
+
"created" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
32
|
+
"expires" TIMESTAMP(3),
|
|
33
|
+
"userId" INTEGER NOT NULL,
|
|
34
|
+
|
|
35
|
+
CONSTRAINT "Token_pkey" PRIMARY KEY ("id")
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
-- CreateTable
|
|
39
|
+
CREATE TABLE "Credential" (
|
|
40
|
+
"id" SERIAL NOT NULL,
|
|
41
|
+
"userId" INTEGER,
|
|
42
|
+
"subType" TEXT,
|
|
43
|
+
"auth_is_valid" BOOLEAN,
|
|
44
|
+
"externalId" TEXT,
|
|
45
|
+
"data" JSONB NOT NULL DEFAULT '{}',
|
|
46
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
47
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
48
|
+
|
|
49
|
+
CONSTRAINT "Credential_pkey" PRIMARY KEY ("id")
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
-- CreateTable
|
|
53
|
+
CREATE TABLE "Entity" (
|
|
54
|
+
"id" SERIAL NOT NULL,
|
|
55
|
+
"credentialId" INTEGER,
|
|
56
|
+
"subType" TEXT,
|
|
57
|
+
"userId" INTEGER,
|
|
58
|
+
"name" TEXT,
|
|
59
|
+
"moduleName" TEXT,
|
|
60
|
+
"externalId" TEXT,
|
|
61
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
62
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
63
|
+
|
|
64
|
+
CONSTRAINT "Entity_pkey" PRIMARY KEY ("id")
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
-- CreateTable
|
|
68
|
+
CREATE TABLE "Integration" (
|
|
69
|
+
"id" SERIAL NOT NULL,
|
|
70
|
+
"userId" INTEGER,
|
|
71
|
+
"status" "IntegrationStatus" NOT NULL DEFAULT 'ENABLED',
|
|
72
|
+
"config" JSONB,
|
|
73
|
+
"version" TEXT,
|
|
74
|
+
"entityReferenceMap" JSONB DEFAULT '{}',
|
|
75
|
+
"errors" JSONB NOT NULL DEFAULT '[]',
|
|
76
|
+
"warnings" JSONB NOT NULL DEFAULT '[]',
|
|
77
|
+
"info" JSONB NOT NULL DEFAULT '[]',
|
|
78
|
+
"logs" JSONB NOT NULL DEFAULT '[]',
|
|
79
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
80
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
81
|
+
|
|
82
|
+
CONSTRAINT "Integration_pkey" PRIMARY KEY ("id")
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
-- CreateTable
|
|
86
|
+
CREATE TABLE "IntegrationMapping" (
|
|
87
|
+
"id" SERIAL NOT NULL,
|
|
88
|
+
"integrationId" INTEGER NOT NULL,
|
|
89
|
+
"sourceId" TEXT,
|
|
90
|
+
"mapping" JSONB,
|
|
91
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
92
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
93
|
+
|
|
94
|
+
CONSTRAINT "IntegrationMapping_pkey" PRIMARY KEY ("id")
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
-- CreateTable
|
|
98
|
+
CREATE TABLE "Sync" (
|
|
99
|
+
"id" SERIAL NOT NULL,
|
|
100
|
+
"integrationId" INTEGER,
|
|
101
|
+
"hash" TEXT NOT NULL,
|
|
102
|
+
"name" TEXT NOT NULL,
|
|
103
|
+
|
|
104
|
+
CONSTRAINT "Sync_pkey" PRIMARY KEY ("id")
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
-- CreateTable
|
|
108
|
+
CREATE TABLE "DataIdentifier" (
|
|
109
|
+
"id" SERIAL NOT NULL,
|
|
110
|
+
"syncId" INTEGER,
|
|
111
|
+
"entityId" INTEGER NOT NULL,
|
|
112
|
+
"idData" JSONB NOT NULL,
|
|
113
|
+
"hash" TEXT NOT NULL,
|
|
114
|
+
|
|
115
|
+
CONSTRAINT "DataIdentifier_pkey" PRIMARY KEY ("id")
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
-- CreateTable
|
|
119
|
+
CREATE TABLE "Association" (
|
|
120
|
+
"id" SERIAL NOT NULL,
|
|
121
|
+
"integrationId" INTEGER NOT NULL,
|
|
122
|
+
"name" TEXT NOT NULL,
|
|
123
|
+
"type" "AssociationType" NOT NULL,
|
|
124
|
+
"primaryObject" TEXT NOT NULL,
|
|
125
|
+
|
|
126
|
+
CONSTRAINT "Association_pkey" PRIMARY KEY ("id")
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
-- CreateTable
|
|
130
|
+
CREATE TABLE "AssociationObject" (
|
|
131
|
+
"id" SERIAL NOT NULL,
|
|
132
|
+
"associationId" INTEGER NOT NULL,
|
|
133
|
+
"entityId" INTEGER NOT NULL,
|
|
134
|
+
"objectType" TEXT NOT NULL,
|
|
135
|
+
"objId" TEXT NOT NULL,
|
|
136
|
+
"metadata" JSONB,
|
|
137
|
+
|
|
138
|
+
CONSTRAINT "AssociationObject_pkey" PRIMARY KEY ("id")
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
-- CreateTable
|
|
142
|
+
CREATE TABLE "State" (
|
|
143
|
+
"id" SERIAL NOT NULL,
|
|
144
|
+
"state" JSONB,
|
|
145
|
+
|
|
146
|
+
CONSTRAINT "State_pkey" PRIMARY KEY ("id")
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
-- CreateTable
|
|
150
|
+
CREATE TABLE "WebsocketConnection" (
|
|
151
|
+
"id" SERIAL NOT NULL,
|
|
152
|
+
"connectionId" TEXT,
|
|
153
|
+
|
|
154
|
+
CONSTRAINT "WebsocketConnection_pkey" PRIMARY KEY ("id")
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
-- CreateTable
|
|
158
|
+
CREATE TABLE "_EntityToIntegration" (
|
|
159
|
+
"A" INTEGER NOT NULL,
|
|
160
|
+
"B" INTEGER NOT NULL,
|
|
161
|
+
|
|
162
|
+
CONSTRAINT "_EntityToIntegration_AB_pkey" PRIMARY KEY ("A","B")
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
-- CreateTable
|
|
166
|
+
CREATE TABLE "_EntityToSync" (
|
|
167
|
+
"A" INTEGER NOT NULL,
|
|
168
|
+
"B" INTEGER NOT NULL,
|
|
169
|
+
|
|
170
|
+
CONSTRAINT "_EntityToSync_AB_pkey" PRIMARY KEY ("A","B")
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
-- CreateIndex
|
|
174
|
+
CREATE INDEX "User_type_idx" ON "User"("type");
|
|
175
|
+
|
|
176
|
+
-- CreateIndex
|
|
177
|
+
CREATE INDEX "User_appUserId_idx" ON "User"("appUserId");
|
|
178
|
+
|
|
179
|
+
-- CreateIndex
|
|
180
|
+
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
181
|
+
|
|
182
|
+
-- CreateIndex
|
|
183
|
+
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
184
|
+
|
|
185
|
+
-- CreateIndex
|
|
186
|
+
CREATE UNIQUE INDEX "User_appOrgId_key" ON "User"("appOrgId");
|
|
187
|
+
|
|
188
|
+
-- CreateIndex
|
|
189
|
+
CREATE INDEX "Token_userId_idx" ON "Token"("userId");
|
|
190
|
+
|
|
191
|
+
-- CreateIndex
|
|
192
|
+
CREATE INDEX "Token_expires_idx" ON "Token"("expires");
|
|
193
|
+
|
|
194
|
+
-- CreateIndex
|
|
195
|
+
CREATE INDEX "Credential_userId_idx" ON "Credential"("userId");
|
|
196
|
+
|
|
197
|
+
-- CreateIndex
|
|
198
|
+
CREATE INDEX "Credential_externalId_idx" ON "Credential"("externalId");
|
|
199
|
+
|
|
200
|
+
-- CreateIndex
|
|
201
|
+
CREATE INDEX "Entity_userId_idx" ON "Entity"("userId");
|
|
202
|
+
|
|
203
|
+
-- CreateIndex
|
|
204
|
+
CREATE INDEX "Entity_externalId_idx" ON "Entity"("externalId");
|
|
205
|
+
|
|
206
|
+
-- CreateIndex
|
|
207
|
+
CREATE INDEX "Entity_moduleName_idx" ON "Entity"("moduleName");
|
|
208
|
+
|
|
209
|
+
-- CreateIndex
|
|
210
|
+
CREATE INDEX "Entity_credentialId_idx" ON "Entity"("credentialId");
|
|
211
|
+
|
|
212
|
+
-- CreateIndex
|
|
213
|
+
CREATE INDEX "Integration_userId_idx" ON "Integration"("userId");
|
|
214
|
+
|
|
215
|
+
-- CreateIndex
|
|
216
|
+
CREATE INDEX "Integration_status_idx" ON "Integration"("status");
|
|
217
|
+
|
|
218
|
+
-- CreateIndex
|
|
219
|
+
CREATE INDEX "IntegrationMapping_integrationId_idx" ON "IntegrationMapping"("integrationId");
|
|
220
|
+
|
|
221
|
+
-- CreateIndex
|
|
222
|
+
CREATE INDEX "IntegrationMapping_sourceId_idx" ON "IntegrationMapping"("sourceId");
|
|
223
|
+
|
|
224
|
+
-- CreateIndex
|
|
225
|
+
CREATE UNIQUE INDEX "IntegrationMapping_integrationId_sourceId_key" ON "IntegrationMapping"("integrationId", "sourceId");
|
|
226
|
+
|
|
227
|
+
-- CreateIndex
|
|
228
|
+
CREATE INDEX "Sync_integrationId_idx" ON "Sync"("integrationId");
|
|
229
|
+
|
|
230
|
+
-- CreateIndex
|
|
231
|
+
CREATE INDEX "Sync_hash_idx" ON "Sync"("hash");
|
|
232
|
+
|
|
233
|
+
-- CreateIndex
|
|
234
|
+
CREATE INDEX "Sync_name_idx" ON "Sync"("name");
|
|
235
|
+
|
|
236
|
+
-- CreateIndex
|
|
237
|
+
CREATE INDEX "DataIdentifier_syncId_idx" ON "DataIdentifier"("syncId");
|
|
238
|
+
|
|
239
|
+
-- CreateIndex
|
|
240
|
+
CREATE INDEX "DataIdentifier_entityId_idx" ON "DataIdentifier"("entityId");
|
|
241
|
+
|
|
242
|
+
-- CreateIndex
|
|
243
|
+
CREATE INDEX "DataIdentifier_hash_idx" ON "DataIdentifier"("hash");
|
|
244
|
+
|
|
245
|
+
-- CreateIndex
|
|
246
|
+
CREATE INDEX "Association_integrationId_idx" ON "Association"("integrationId");
|
|
247
|
+
|
|
248
|
+
-- CreateIndex
|
|
249
|
+
CREATE INDEX "Association_name_idx" ON "Association"("name");
|
|
250
|
+
|
|
251
|
+
-- CreateIndex
|
|
252
|
+
CREATE INDEX "AssociationObject_associationId_idx" ON "AssociationObject"("associationId");
|
|
253
|
+
|
|
254
|
+
-- CreateIndex
|
|
255
|
+
CREATE INDEX "AssociationObject_entityId_idx" ON "AssociationObject"("entityId");
|
|
256
|
+
|
|
257
|
+
-- CreateIndex
|
|
258
|
+
CREATE INDEX "WebsocketConnection_connectionId_idx" ON "WebsocketConnection"("connectionId");
|
|
259
|
+
|
|
260
|
+
-- CreateIndex
|
|
261
|
+
CREATE INDEX "_EntityToIntegration_B_index" ON "_EntityToIntegration"("B");
|
|
262
|
+
|
|
263
|
+
-- CreateIndex
|
|
264
|
+
CREATE INDEX "_EntityToSync_B_index" ON "_EntityToSync"("B");
|
|
265
|
+
|
|
266
|
+
-- AddForeignKey
|
|
267
|
+
ALTER TABLE "User" ADD CONSTRAINT "User_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "User"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
|
268
|
+
|
|
269
|
+
-- AddForeignKey
|
|
270
|
+
ALTER TABLE "Token" ADD CONSTRAINT "Token_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
271
|
+
|
|
272
|
+
-- AddForeignKey
|
|
273
|
+
ALTER TABLE "Credential" ADD CONSTRAINT "Credential_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
274
|
+
|
|
275
|
+
-- AddForeignKey
|
|
276
|
+
ALTER TABLE "Entity" ADD CONSTRAINT "Entity_credentialId_fkey" FOREIGN KEY ("credentialId") REFERENCES "Credential"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
277
|
+
|
|
278
|
+
-- AddForeignKey
|
|
279
|
+
ALTER TABLE "Entity" ADD CONSTRAINT "Entity_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
280
|
+
|
|
281
|
+
-- AddForeignKey
|
|
282
|
+
ALTER TABLE "Integration" ADD CONSTRAINT "Integration_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
283
|
+
|
|
284
|
+
-- AddForeignKey
|
|
285
|
+
ALTER TABLE "IntegrationMapping" ADD CONSTRAINT "IntegrationMapping_integrationId_fkey" FOREIGN KEY ("integrationId") REFERENCES "Integration"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
286
|
+
|
|
287
|
+
-- AddForeignKey
|
|
288
|
+
ALTER TABLE "Sync" ADD CONSTRAINT "Sync_integrationId_fkey" FOREIGN KEY ("integrationId") REFERENCES "Integration"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
289
|
+
|
|
290
|
+
-- AddForeignKey
|
|
291
|
+
ALTER TABLE "DataIdentifier" ADD CONSTRAINT "DataIdentifier_syncId_fkey" FOREIGN KEY ("syncId") REFERENCES "Sync"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
292
|
+
|
|
293
|
+
-- AddForeignKey
|
|
294
|
+
ALTER TABLE "DataIdentifier" ADD CONSTRAINT "DataIdentifier_entityId_fkey" FOREIGN KEY ("entityId") REFERENCES "Entity"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
295
|
+
|
|
296
|
+
-- AddForeignKey
|
|
297
|
+
ALTER TABLE "Association" ADD CONSTRAINT "Association_integrationId_fkey" FOREIGN KEY ("integrationId") REFERENCES "Integration"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
298
|
+
|
|
299
|
+
-- AddForeignKey
|
|
300
|
+
ALTER TABLE "AssociationObject" ADD CONSTRAINT "AssociationObject_associationId_fkey" FOREIGN KEY ("associationId") REFERENCES "Association"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
301
|
+
|
|
302
|
+
-- AddForeignKey
|
|
303
|
+
ALTER TABLE "AssociationObject" ADD CONSTRAINT "AssociationObject_entityId_fkey" FOREIGN KEY ("entityId") REFERENCES "Entity"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
304
|
+
|
|
305
|
+
-- AddForeignKey
|
|
306
|
+
ALTER TABLE "_EntityToIntegration" ADD CONSTRAINT "_EntityToIntegration_A_fkey" FOREIGN KEY ("A") REFERENCES "Entity"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
307
|
+
|
|
308
|
+
-- AddForeignKey
|
|
309
|
+
ALTER TABLE "_EntityToIntegration" ADD CONSTRAINT "_EntityToIntegration_B_fkey" FOREIGN KEY ("B") REFERENCES "Integration"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
310
|
+
|
|
311
|
+
-- AddForeignKey
|
|
312
|
+
ALTER TABLE "_EntityToSync" ADD CONSTRAINT "_EntityToSync_A_fkey" FOREIGN KEY ("A") REFERENCES "Entity"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
313
|
+
|
|
314
|
+
-- AddForeignKey
|
|
315
|
+
ALTER TABLE "_EntityToSync" ADD CONSTRAINT "_EntityToSync_B_fkey" FOREIGN KEY ("B") REFERENCES "Sync"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
package/prisma-postgresql/migrations/20251112195422_update_user_unique_constraints/migration.sql
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to drop the column `subType` on the `Credential` table. All the data in the column will be lost.
|
|
5
|
+
- You are about to drop the column `subType` on the `Entity` table. All the data in the column will be lost.
|
|
6
|
+
- A unique constraint covering the columns `[username,appUserId]` on the table `User` will be added. If there are existing duplicate values, this will fail.
|
|
7
|
+
|
|
8
|
+
*/
|
|
9
|
+
-- DropIndex
|
|
10
|
+
DROP INDEX "User_appOrgId_key";
|
|
11
|
+
|
|
12
|
+
-- DropIndex
|
|
13
|
+
DROP INDEX "User_email_key";
|
|
14
|
+
|
|
15
|
+
-- DropIndex
|
|
16
|
+
DROP INDEX "User_username_key";
|
|
17
|
+
|
|
18
|
+
-- AlterTable
|
|
19
|
+
ALTER TABLE "Credential" DROP COLUMN "subType";
|
|
20
|
+
|
|
21
|
+
-- AlterTable
|
|
22
|
+
ALTER TABLE "Entity" DROP COLUMN "subType";
|
|
23
|
+
|
|
24
|
+
-- CreateIndex
|
|
25
|
+
CREATE UNIQUE INDEX "User_username_appUserId_key" ON "User"("username", "appUserId");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- AlterTable
|
|
2
|
+
-- Backfill the Entity.data JSONB field declared in schema.prisma but never
|
|
3
|
+
-- migrated. ModuleRepositoryPostgres.createEntity / findEntity use this
|
|
4
|
+
-- column to persist & rehydrate identifiers/details fields that fall
|
|
5
|
+
-- outside the six named columns (id, userId, credentialId, name,
|
|
6
|
+
-- moduleName, externalId). Without the column, any integration whose
|
|
7
|
+
-- getEntityDetails returns an extra field (e.g. `firm_subdomain`) causes
|
|
8
|
+
-- prisma.entity.create to throw P2022 at runtime.
|
|
9
|
+
ALTER TABLE "Entity"
|
|
10
|
+
ADD COLUMN IF NOT EXISTS "data" JSONB NOT NULL DEFAULT '{}';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
-- The Process model is declared in schema.prisma but was never created by
|
|
3
|
+
-- any prior migration. ProcessRepositoryPostgres (read/write) and
|
|
4
|
+
-- FriggProcessManager rely on this table for long-running job tracking —
|
|
5
|
+
-- e.g. fan-out sync progress, batch state machines. Without the table,
|
|
6
|
+
-- any `prisma.process.create` at runtime throws P2021.
|
|
7
|
+
CREATE TABLE "Process" (
|
|
8
|
+
"id" SERIAL NOT NULL,
|
|
9
|
+
"userId" INTEGER NOT NULL,
|
|
10
|
+
"integrationId" INTEGER NOT NULL,
|
|
11
|
+
"name" TEXT NOT NULL,
|
|
12
|
+
"type" TEXT NOT NULL,
|
|
13
|
+
"state" TEXT NOT NULL,
|
|
14
|
+
"context" JSONB NOT NULL DEFAULT '{}',
|
|
15
|
+
"results" JSONB NOT NULL DEFAULT '{}',
|
|
16
|
+
"parentProcessId" INTEGER,
|
|
17
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
18
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
19
|
+
|
|
20
|
+
CONSTRAINT "Process_pkey" PRIMARY KEY ("id")
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
-- CreateIndex
|
|
24
|
+
CREATE INDEX "Process_userId_idx" ON "Process"("userId");
|
|
25
|
+
|
|
26
|
+
-- CreateIndex
|
|
27
|
+
CREATE INDEX "Process_integrationId_idx" ON "Process"("integrationId");
|
|
28
|
+
|
|
29
|
+
-- CreateIndex
|
|
30
|
+
CREATE INDEX "Process_type_idx" ON "Process"("type");
|
|
31
|
+
|
|
32
|
+
-- CreateIndex
|
|
33
|
+
CREATE INDEX "Process_state_idx" ON "Process"("state");
|
|
34
|
+
|
|
35
|
+
-- CreateIndex
|
|
36
|
+
CREATE INDEX "Process_name_idx" ON "Process"("name");
|
|
37
|
+
|
|
38
|
+
-- CreateIndex
|
|
39
|
+
CREATE INDEX "Process_parentProcessId_idx" ON "Process"("parentProcessId");
|
|
40
|
+
|
|
41
|
+
-- AddForeignKey
|
|
42
|
+
ALTER TABLE "Process" ADD CONSTRAINT "Process_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
43
|
+
|
|
44
|
+
-- AddForeignKey
|
|
45
|
+
ALTER TABLE "Process" ADD CONSTRAINT "Process_integrationId_fkey" FOREIGN KEY ("integrationId") REFERENCES "Integration"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
46
|
+
|
|
47
|
+
-- AddForeignKey
|
|
48
|
+
ALTER TABLE "Process" ADD CONSTRAINT "Process_parentProcessId_fkey" FOREIGN KEY ("parentProcessId") REFERENCES "Process"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|