@aerokit/sdk 12.44.0
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/LICENSE +277 -0
- package/README.md +170 -0
- package/dist/cjs/bpm/deployer.js +57 -0
- package/dist/cjs/bpm/index.js +35 -0
- package/dist/cjs/bpm/process.js +636 -0
- package/dist/cjs/bpm/tasks.js +973 -0
- package/dist/cjs/bpm/values.js +82 -0
- package/dist/cjs/cache/cache.js +64 -0
- package/dist/cjs/cache/index.js +26 -0
- package/dist/cjs/cms/cmis.js +689 -0
- package/dist/cjs/cms/index.js +26 -0
- package/dist/cjs/component/decorators.js +126 -0
- package/dist/cjs/component/index.js +36 -0
- package/dist/cjs/core/configurations.js +110 -0
- package/dist/cjs/core/context.js +47 -0
- package/dist/cjs/core/env.js +45 -0
- package/dist/cjs/core/globals.js +54 -0
- package/dist/cjs/core/index.js +35 -0
- package/dist/cjs/db/dao.js +795 -0
- package/dist/cjs/db/database.js +904 -0
- package/dist/cjs/db/decorators.js +167 -0
- package/dist/cjs/db/index.js +72 -0
- package/dist/cjs/db/insert.js +51 -0
- package/dist/cjs/db/orm.js +245 -0
- package/dist/cjs/db/ormstatements.js +243 -0
- package/dist/cjs/db/procedure.js +112 -0
- package/dist/cjs/db/query.js +57 -0
- package/dist/cjs/db/repository.js +148 -0
- package/dist/cjs/db/sequence.js +59 -0
- package/dist/cjs/db/sql.js +516 -0
- package/dist/cjs/db/store.js +172 -0
- package/dist/cjs/db/translator.js +100 -0
- package/dist/cjs/db/update.js +43 -0
- package/dist/cjs/etcd/client.js +174 -0
- package/dist/cjs/etcd/index.js +26 -0
- package/dist/cjs/extensions/decorators.js +40 -0
- package/dist/cjs/extensions/extensions.js +108 -0
- package/dist/cjs/extensions/index.js +39 -0
- package/dist/cjs/git/client.js +277 -0
- package/dist/cjs/git/index.js +26 -0
- package/dist/cjs/http/client-async.js +224 -0
- package/dist/cjs/http/client.js +145 -0
- package/dist/cjs/http/decorators.js +76 -0
- package/dist/cjs/http/errors/ForbiddenError.js +41 -0
- package/dist/cjs/http/errors/ValidationError.js +41 -0
- package/dist/cjs/http/errors.js +26 -0
- package/dist/cjs/http/index.js +59 -0
- package/dist/cjs/http/request.js +281 -0
- package/dist/cjs/http/response.js +452 -0
- package/dist/cjs/http/rs/resource-common.js +32 -0
- package/dist/cjs/http/rs/resource-http-controller.js +306 -0
- package/dist/cjs/http/rs/resource-mappings.js +130 -0
- package/dist/cjs/http/rs/resource-method.js +218 -0
- package/dist/cjs/http/rs/resource.js +232 -0
- package/dist/cjs/http/rs.js +31 -0
- package/dist/cjs/http/session.js +124 -0
- package/dist/cjs/http/upload.js +144 -0
- package/dist/cjs/http/utils.js +106 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/indexing/index.js +29 -0
- package/dist/cjs/indexing/searcher.js +70 -0
- package/dist/cjs/indexing/writer.js +45 -0
- package/dist/cjs/integrations/index.js +26 -0
- package/dist/cjs/integrations/integrations.js +55 -0
- package/dist/cjs/io/bytes.js +101 -0
- package/dist/cjs/io/files.js +344 -0
- package/dist/cjs/io/image.js +43 -0
- package/dist/cjs/io/index.js +38 -0
- package/dist/cjs/io/streams.js +243 -0
- package/dist/cjs/io/zip.js +251 -0
- package/dist/cjs/job/decorators.js +40 -0
- package/dist/cjs/job/index.js +39 -0
- package/dist/cjs/job/scheduler.js +347 -0
- package/dist/cjs/junit/index.js +18 -0
- package/dist/cjs/junit/junit.js +67 -0
- package/dist/cjs/kafka/consumer.js +70 -0
- package/dist/cjs/kafka/index.js +29 -0
- package/dist/cjs/kafka/producer.js +70 -0
- package/dist/cjs/log/index.js +26 -0
- package/dist/cjs/log/logging.js +174 -0
- package/dist/cjs/mail/client.js +153 -0
- package/dist/cjs/mail/index.js +26 -0
- package/dist/cjs/messaging/consumer.js +83 -0
- package/dist/cjs/messaging/decorators.js +40 -0
- package/dist/cjs/messaging/index.js +42 -0
- package/dist/cjs/messaging/producer.js +81 -0
- package/dist/cjs/mongodb/client.js +627 -0
- package/dist/cjs/mongodb/dao.js +390 -0
- package/dist/cjs/mongodb/index.js +36 -0
- package/dist/cjs/net/decorators.js +40 -0
- package/dist/cjs/net/index.js +42 -0
- package/dist/cjs/net/soap.js +228 -0
- package/dist/cjs/net/websockets.js +151 -0
- package/dist/cjs/net/wrappers/onClose.js +2 -0
- package/dist/cjs/net/wrappers/onError.js +2 -0
- package/dist/cjs/net/wrappers/onMessage.js +2 -0
- package/dist/cjs/net/wrappers/onOpen.js +2 -0
- package/dist/cjs/pdf/index.js +26 -0
- package/dist/cjs/pdf/pdf.js +160 -0
- package/dist/cjs/platform/command.js +47 -0
- package/dist/cjs/platform/engines.js +70 -0
- package/dist/cjs/platform/index.js +47 -0
- package/dist/cjs/platform/lifecycle.js +49 -0
- package/dist/cjs/platform/os.js +51 -0
- package/dist/cjs/platform/problems.js +127 -0
- package/dist/cjs/platform/registry.js +319 -0
- package/dist/cjs/platform/repository.js +498 -0
- package/dist/cjs/platform/workspace.js +574 -0
- package/dist/cjs/qldb/index.js +26 -0
- package/dist/cjs/qldb/qldb.js +24 -0
- package/dist/cjs/rabbitmq/consumer.js +50 -0
- package/dist/cjs/rabbitmq/index.js +29 -0
- package/dist/cjs/rabbitmq/producer.js +38 -0
- package/dist/cjs/redis/client.js +190 -0
- package/dist/cjs/redis/index.js +26 -0
- package/dist/cjs/security/decorators.js +48 -0
- package/dist/cjs/security/index.js +40 -0
- package/dist/cjs/security/oauth.js +75 -0
- package/dist/cjs/security/user.js +88 -0
- package/dist/cjs/template/engines.js +139 -0
- package/dist/cjs/template/index.js +26 -0
- package/dist/cjs/utils/alphanumeric.js +107 -0
- package/dist/cjs/utils/base64.js +104 -0
- package/dist/cjs/utils/converter.js +78 -0
- package/dist/cjs/utils/digest.js +167 -0
- package/dist/cjs/utils/escape.js +160 -0
- package/dist/cjs/utils/hex.js +104 -0
- package/dist/cjs/utils/index.js +68 -0
- package/dist/cjs/utils/jsonpath.js +489 -0
- package/dist/cjs/utils/qrcode.js +41 -0
- package/dist/cjs/utils/url.js +82 -0
- package/dist/cjs/utils/utf8.js +61 -0
- package/dist/cjs/utils/uuid.js +48 -0
- package/dist/cjs/utils/xml.js +57 -0
- package/dist/dts/bpm/deployer.d.ts +29 -0
- package/dist/dts/bpm/index.d.ts +8 -0
- package/dist/dts/bpm/process.d.ts +433 -0
- package/dist/dts/bpm/tasks.d.ts +2022 -0
- package/dist/dts/bpm/values.d.ts +38 -0
- package/dist/dts/cache/cache.d.ts +30 -0
- package/dist/dts/cache/index.d.ts +2 -0
- package/dist/dts/cms/cmis.d.ts +413 -0
- package/dist/dts/cms/index.d.ts +2 -0
- package/dist/dts/component/decorators.d.ts +52 -0
- package/dist/dts/component/index.d.ts +2 -0
- package/dist/dts/core/configurations.d.ts +65 -0
- package/dist/dts/core/context.d.ts +19 -0
- package/dist/dts/core/env.d.ts +23 -0
- package/dist/dts/core/globals.d.ts +30 -0
- package/dist/dts/core/index.d.ts +8 -0
- package/dist/dts/db/dao.d.ts +8 -0
- package/dist/dts/db/database.d.ts +507 -0
- package/dist/dts/db/decorators.d.ts +89 -0
- package/dist/dts/db/index.d.ts +25 -0
- package/dist/dts/db/insert.d.ts +32 -0
- package/dist/dts/db/orm.d.ts +44 -0
- package/dist/dts/db/ormstatements.d.ts +4 -0
- package/dist/dts/db/procedure.d.ts +25 -0
- package/dist/dts/db/query.d.ts +48 -0
- package/dist/dts/db/repository.d.ts +64 -0
- package/dist/dts/db/sequence.d.ts +34 -0
- package/dist/dts/db/sql.d.ts +267 -0
- package/dist/dts/db/store.d.ts +138 -0
- package/dist/dts/db/translator.d.ts +26 -0
- package/dist/dts/db/update.d.ts +21 -0
- package/dist/dts/etcd/client.d.ts +92 -0
- package/dist/dts/etcd/index.d.ts +2 -0
- package/dist/dts/extensions/decorators.d.ts +11 -0
- package/dist/dts/extensions/extensions.d.ts +41 -0
- package/dist/dts/extensions/index.d.ts +4 -0
- package/dist/dts/git/client.d.ts +478 -0
- package/dist/dts/git/index.d.ts +2 -0
- package/dist/dts/http/client-async.d.ts +158 -0
- package/dist/dts/http/client.d.ts +180 -0
- package/dist/dts/http/decorators.d.ts +11 -0
- package/dist/dts/http/errors/ForbiddenError.d.ts +20 -0
- package/dist/dts/http/errors/ValidationError.d.ts +20 -0
- package/dist/dts/http/errors.d.ts +2 -0
- package/dist/dts/http/index.d.ts +16 -0
- package/dist/dts/http/request.d.ts +158 -0
- package/dist/dts/http/response.d.ts +281 -0
- package/dist/dts/http/rs/resource-common.d.ts +11 -0
- package/dist/dts/http/rs/resource-http-controller.d.ts +43 -0
- package/dist/dts/http/rs/resource-mappings.d.ts +70 -0
- package/dist/dts/http/rs/resource-method.d.ts +206 -0
- package/dist/dts/http/rs/resource.d.ts +126 -0
- package/dist/dts/http/rs.d.ts +4 -0
- package/dist/dts/http/session.d.ts +81 -0
- package/dist/dts/http/upload.d.ts +100 -0
- package/dist/dts/http/utils.d.ts +54 -0
- package/dist/dts/index.d.ts +0 -0
- package/dist/dts/indexing/index.d.ts +4 -0
- package/dist/dts/indexing/searcher.d.ts +47 -0
- package/dist/dts/indexing/writer.d.ts +22 -0
- package/dist/dts/integrations/index.d.ts +2 -0
- package/dist/dts/integrations/integrations.d.ts +118 -0
- package/dist/dts/io/bytes.d.ts +56 -0
- package/dist/dts/io/files.d.ts +261 -0
- package/dist/dts/io/image.d.ts +22 -0
- package/dist/dts/io/index.d.ts +10 -0
- package/dist/dts/io/streams.d.ts +172 -0
- package/dist/dts/io/zip.d.ts +178 -0
- package/dist/dts/job/decorators.d.ts +11 -0
- package/dist/dts/job/index.d.ts +4 -0
- package/dist/dts/job/scheduler.d.ts +250 -0
- package/dist/dts/junit/index.d.ts +1 -0
- package/dist/dts/junit/junit.d.ts +50 -0
- package/dist/dts/kafka/consumer.d.ts +48 -0
- package/dist/dts/kafka/index.d.ts +4 -0
- package/dist/dts/kafka/producer.d.ts +50 -0
- package/dist/dts/log/index.d.ts +2 -0
- package/dist/dts/log/logging.d.ts +102 -0
- package/dist/dts/mail/client.d.ts +90 -0
- package/dist/dts/mail/index.d.ts +2 -0
- package/dist/dts/messaging/consumer.d.ts +61 -0
- package/dist/dts/messaging/decorators.d.ts +11 -0
- package/dist/dts/messaging/index.d.ts +6 -0
- package/dist/dts/messaging/producer.d.ts +59 -0
- package/dist/dts/mongodb/client.d.ts +367 -0
- package/dist/dts/mongodb/dao.d.ts +24 -0
- package/dist/dts/mongodb/index.d.ts +2 -0
- package/dist/dts/net/decorators.d.ts +11 -0
- package/dist/dts/net/index.d.ts +6 -0
- package/dist/dts/net/soap.d.ts +115 -0
- package/dist/dts/net/websockets.d.ts +100 -0
- package/dist/dts/net/wrappers/onClose.d.ts +0 -0
- package/dist/dts/net/wrappers/onError.d.ts +0 -0
- package/dist/dts/net/wrappers/onMessage.d.ts +0 -0
- package/dist/dts/net/wrappers/onOpen.d.ts +0 -0
- package/dist/dts/pdf/index.d.ts +2 -0
- package/dist/dts/pdf/pdf.d.ts +72 -0
- package/dist/dts/platform/command.d.ts +41 -0
- package/dist/dts/platform/engines.d.ts +35 -0
- package/dist/dts/platform/index.d.ts +16 -0
- package/dist/dts/platform/lifecycle.d.ts +22 -0
- package/dist/dts/platform/os.d.ts +23 -0
- package/dist/dts/platform/problems.d.ts +114 -0
- package/dist/dts/platform/registry.d.ts +227 -0
- package/dist/dts/platform/repository.d.ts +354 -0
- package/dist/dts/platform/workspace.d.ts +421 -0
- package/dist/dts/qldb/index.d.ts +2 -0
- package/dist/dts/qldb/qldb.d.ts +1 -0
- package/dist/dts/rabbitmq/consumer.d.ts +25 -0
- package/dist/dts/rabbitmq/index.d.ts +4 -0
- package/dist/dts/rabbitmq/producer.d.ts +15 -0
- package/dist/dts/redis/client.d.ts +134 -0
- package/dist/dts/redis/index.d.ts +2 -0
- package/dist/dts/security/decorators.d.ts +4 -0
- package/dist/dts/security/index.d.ts +5 -0
- package/dist/dts/security/oauth.d.ts +39 -0
- package/dist/dts/security/user.d.ts +51 -0
- package/dist/dts/template/engines.d.ts +98 -0
- package/dist/dts/template/index.d.ts +2 -0
- package/dist/dts/utils/alphanumeric.d.ts +39 -0
- package/dist/dts/utils/base64.d.ts +48 -0
- package/dist/dts/utils/converter.d.ts +44 -0
- package/dist/dts/utils/digest.d.ts +50 -0
- package/dist/dts/utils/escape.d.ts +110 -0
- package/dist/dts/utils/hex.d.ts +48 -0
- package/dist/dts/utils/index.d.ts +23 -0
- package/dist/dts/utils/jsonpath.d.ts +22 -0
- package/dist/dts/utils/qrcode.d.ts +16 -0
- package/dist/dts/utils/url.d.ts +50 -0
- package/dist/dts/utils/utf8.d.ts +33 -0
- package/dist/dts/utils/uuid.d.ts +21 -0
- package/dist/dts/utils/xml.d.ts +22 -0
- package/dist/esm/bpm/deployer.mjs +38 -0
- package/dist/esm/bpm/index.mjs +15 -0
- package/dist/esm/bpm/process.mjs +617 -0
- package/dist/esm/bpm/tasks.mjs +954 -0
- package/dist/esm/bpm/values.mjs +63 -0
- package/dist/esm/cache/cache.mjs +45 -0
- package/dist/esm/cache/index.mjs +6 -0
- package/dist/esm/cms/cmis.mjs +660 -0
- package/dist/esm/cms/index.mjs +6 -0
- package/dist/esm/component/decorators.mjs +107 -0
- package/dist/esm/component/index.mjs +6 -0
- package/dist/esm/core/configurations.mjs +91 -0
- package/dist/esm/core/context.mjs +28 -0
- package/dist/esm/core/env.mjs +26 -0
- package/dist/esm/core/globals.mjs +35 -0
- package/dist/esm/core/index.mjs +15 -0
- package/dist/esm/db/dao.mjs +775 -0
- package/dist/esm/db/database.mjs +885 -0
- package/dist/esm/db/decorators.mjs +148 -0
- package/dist/esm/db/index.mjs +42 -0
- package/dist/esm/db/insert.mjs +32 -0
- package/dist/esm/db/orm.mjs +225 -0
- package/dist/esm/db/ormstatements.mjs +223 -0
- package/dist/esm/db/procedure.mjs +93 -0
- package/dist/esm/db/query.mjs +38 -0
- package/dist/esm/db/repository.mjs +129 -0
- package/dist/esm/db/sequence.mjs +40 -0
- package/dist/esm/db/sql.mjs +497 -0
- package/dist/esm/db/store.mjs +153 -0
- package/dist/esm/db/translator.mjs +81 -0
- package/dist/esm/db/update.mjs +24 -0
- package/dist/esm/etcd/client.mjs +155 -0
- package/dist/esm/etcd/index.mjs +6 -0
- package/dist/esm/extensions/decorators.mjs +21 -0
- package/dist/esm/extensions/extensions.mjs +89 -0
- package/dist/esm/extensions/index.mjs +9 -0
- package/dist/esm/git/client.mjs +258 -0
- package/dist/esm/git/index.mjs +6 -0
- package/dist/esm/http/client-async.mjs +205 -0
- package/dist/esm/http/client.mjs +126 -0
- package/dist/esm/http/decorators.mjs +47 -0
- package/dist/esm/http/errors/ForbiddenError.mjs +22 -0
- package/dist/esm/http/errors/ValidationError.mjs +22 -0
- package/dist/esm/http/errors.mjs +7 -0
- package/dist/esm/http/index.mjs +29 -0
- package/dist/esm/http/request.mjs +262 -0
- package/dist/esm/http/response.mjs +433 -0
- package/dist/esm/http/rs/resource-common.mjs +13 -0
- package/dist/esm/http/rs/resource-http-controller.mjs +287 -0
- package/dist/esm/http/rs/resource-mappings.mjs +111 -0
- package/dist/esm/http/rs/resource-method.mjs +199 -0
- package/dist/esm/http/rs/resource.mjs +213 -0
- package/dist/esm/http/rs.mjs +12 -0
- package/dist/esm/http/session.mjs +105 -0
- package/dist/esm/http/upload.mjs +125 -0
- package/dist/esm/http/utils.mjs +87 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/indexing/index.mjs +9 -0
- package/dist/esm/indexing/searcher.mjs +51 -0
- package/dist/esm/indexing/writer.mjs +26 -0
- package/dist/esm/integrations/index.mjs +6 -0
- package/dist/esm/integrations/integrations.mjs +36 -0
- package/dist/esm/io/bytes.mjs +82 -0
- package/dist/esm/io/files.mjs +325 -0
- package/dist/esm/io/image.mjs +24 -0
- package/dist/esm/io/index.mjs +18 -0
- package/dist/esm/io/streams.mjs +224 -0
- package/dist/esm/io/zip.mjs +232 -0
- package/dist/esm/job/decorators.mjs +21 -0
- package/dist/esm/job/index.mjs +9 -0
- package/dist/esm/job/scheduler.mjs +328 -0
- package/dist/esm/junit/index.mjs +2 -0
- package/dist/esm/junit/junit.mjs +48 -0
- package/dist/esm/kafka/consumer.mjs +51 -0
- package/dist/esm/kafka/index.mjs +9 -0
- package/dist/esm/kafka/producer.mjs +51 -0
- package/dist/esm/log/index.mjs +6 -0
- package/dist/esm/log/logging.mjs +155 -0
- package/dist/esm/mail/client.mjs +134 -0
- package/dist/esm/mail/index.mjs +6 -0
- package/dist/esm/messaging/consumer.mjs +64 -0
- package/dist/esm/messaging/decorators.mjs +21 -0
- package/dist/esm/messaging/index.mjs +12 -0
- package/dist/esm/messaging/producer.mjs +62 -0
- package/dist/esm/mongodb/client.mjs +608 -0
- package/dist/esm/mongodb/dao.mjs +360 -0
- package/dist/esm/mongodb/index.mjs +7 -0
- package/dist/esm/net/decorators.mjs +21 -0
- package/dist/esm/net/index.mjs +12 -0
- package/dist/esm/net/soap.mjs +209 -0
- package/dist/esm/net/websockets.mjs +132 -0
- package/dist/esm/net/wrappers/onClose.mjs +2 -0
- package/dist/esm/net/wrappers/onError.mjs +2 -0
- package/dist/esm/net/wrappers/onMessage.mjs +2 -0
- package/dist/esm/net/wrappers/onOpen.mjs +2 -0
- package/dist/esm/pdf/index.mjs +6 -0
- package/dist/esm/pdf/pdf.mjs +141 -0
- package/dist/esm/platform/command.mjs +28 -0
- package/dist/esm/platform/engines.mjs +51 -0
- package/dist/esm/platform/index.mjs +27 -0
- package/dist/esm/platform/lifecycle.mjs +30 -0
- package/dist/esm/platform/os.mjs +32 -0
- package/dist/esm/platform/problems.mjs +108 -0
- package/dist/esm/platform/registry.mjs +300 -0
- package/dist/esm/platform/repository.mjs +479 -0
- package/dist/esm/platform/workspace.mjs +555 -0
- package/dist/esm/qldb/index.mjs +6 -0
- package/dist/esm/qldb/qldb.mjs +5 -0
- package/dist/esm/rabbitmq/consumer.mjs +31 -0
- package/dist/esm/rabbitmq/index.mjs +9 -0
- package/dist/esm/rabbitmq/producer.mjs +19 -0
- package/dist/esm/redis/client.mjs +171 -0
- package/dist/esm/redis/index.mjs +6 -0
- package/dist/esm/security/decorators.mjs +29 -0
- package/dist/esm/security/index.mjs +10 -0
- package/dist/esm/security/oauth.mjs +56 -0
- package/dist/esm/security/user.mjs +69 -0
- package/dist/esm/template/engines.mjs +120 -0
- package/dist/esm/template/index.mjs +6 -0
- package/dist/esm/utils/alphanumeric.mjs +88 -0
- package/dist/esm/utils/base64.mjs +85 -0
- package/dist/esm/utils/converter.mjs +59 -0
- package/dist/esm/utils/digest.mjs +148 -0
- package/dist/esm/utils/escape.mjs +141 -0
- package/dist/esm/utils/hex.mjs +85 -0
- package/dist/esm/utils/index.mjs +38 -0
- package/dist/esm/utils/jsonpath.mjs +470 -0
- package/dist/esm/utils/qrcode.mjs +22 -0
- package/dist/esm/utils/url.mjs +63 -0
- package/dist/esm/utils/utf8.mjs +42 -0
- package/dist/esm/utils/uuid.mjs +29 -0
- package/dist/esm/utils/xml.mjs +38 -0
- package/package.json +58 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { Logging } from "@aerokit/sdk/log";
|
|
2
|
+
import { SQLBuilder } from "./sql";
|
|
3
|
+
function ORMStatements(orm, dialect) {
|
|
4
|
+
this.$log = Logging.getLogger("db.dao.ormstatements");
|
|
5
|
+
this.orm = orm;
|
|
6
|
+
this.orm.tableName = this.orm.table;
|
|
7
|
+
this.orm.properties.forEach(function(property) {
|
|
8
|
+
property.columnName = property.column;
|
|
9
|
+
});
|
|
10
|
+
this.dialect = dialect || SQLBuilder.getDialect();
|
|
11
|
+
}
|
|
12
|
+
;
|
|
13
|
+
ORMStatements.prototype.constructor = ORMStatements;
|
|
14
|
+
ORMStatements.prototype.createTable = function() {
|
|
15
|
+
const builder = this.dialect.create().table(this.orm.table);
|
|
16
|
+
this.orm.properties.forEach(function(property) {
|
|
17
|
+
const column = this.orm.toColumn(property);
|
|
18
|
+
if (property.type.toUpperCase() === "VARCHAR") {
|
|
19
|
+
if (property.length === void 0)
|
|
20
|
+
property.length = 255;
|
|
21
|
+
builder.columnVarchar(column.name, property.length, column.primaryKey === "true", column.nullable === "true", property.unique);
|
|
22
|
+
} else if (property.type.toUpperCase() === "CHAR") {
|
|
23
|
+
if (property.length === void 0)
|
|
24
|
+
property.length = 1;
|
|
25
|
+
property.length = parseInt(property.length, 10);
|
|
26
|
+
builder.columnChar(column.name, property.length, column.primaryKey === "true", column.nullable === "true", property.unique);
|
|
27
|
+
} else {
|
|
28
|
+
builder.column(column.name, column.type, column.primaryKey === "true", column.nullable === "true", property.unique);
|
|
29
|
+
}
|
|
30
|
+
}.bind(this));
|
|
31
|
+
return builder;
|
|
32
|
+
};
|
|
33
|
+
ORMStatements.prototype.dropTable = function() {
|
|
34
|
+
return this.dialect.drop().table(this.orm.table);
|
|
35
|
+
};
|
|
36
|
+
ORMStatements.prototype.insert = function() {
|
|
37
|
+
const builder = this.dialect.insert().into(this.orm.table);
|
|
38
|
+
this.orm.properties.forEach(function(property) {
|
|
39
|
+
builder.column(property.column).value("?", property);
|
|
40
|
+
});
|
|
41
|
+
return builder;
|
|
42
|
+
};
|
|
43
|
+
ORMStatements.prototype.update = function(entity) {
|
|
44
|
+
if (!entity)
|
|
45
|
+
throw Error("Illegal argument: entity[" + entity + "]");
|
|
46
|
+
const builder = this.dialect.update().table(this.orm.table);
|
|
47
|
+
this.orm.properties.filter(function(property) {
|
|
48
|
+
return Object.keys(entity).indexOf(property.name) > -1 && (!property.allowedOps || property.allowedOps.indexOf("update") > -1);
|
|
49
|
+
}).forEach(function(property) {
|
|
50
|
+
if (!property.id)
|
|
51
|
+
builder.set(property.column, "?", property);
|
|
52
|
+
});
|
|
53
|
+
const pkProperty = this.orm.getPrimaryKey();
|
|
54
|
+
builder.where(pkProperty.column + "=?", [pkProperty]);
|
|
55
|
+
return builder;
|
|
56
|
+
};
|
|
57
|
+
ORMStatements.prototype["delete"] = ORMStatements.prototype.remove = function() {
|
|
58
|
+
const builder = this.dialect.delete().from(this.orm.table);
|
|
59
|
+
if (arguments[0] !== void 0) {
|
|
60
|
+
let filterFieldNames = arguments[0];
|
|
61
|
+
if (filterFieldNames.constructor !== Array)
|
|
62
|
+
filterFieldNames = [filterFieldNames];
|
|
63
|
+
for (let i = 0; i < filterFieldNames.length; i++) {
|
|
64
|
+
const property = this.orm.getProperty(filterFieldNames[i]);
|
|
65
|
+
if (!property)
|
|
66
|
+
throw Error("Unknown property name: " + filterFieldNames[i] + " in $filter");
|
|
67
|
+
builder.where(property.column + "=?", [property]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return builder;
|
|
71
|
+
};
|
|
72
|
+
ORMStatements.prototype.find = function(params) {
|
|
73
|
+
let builder = this.dialect.select();
|
|
74
|
+
if (params !== void 0 && params.select !== void 0) {
|
|
75
|
+
const selectedFields = params.select.constructor === Array ? params.select : [params.select];
|
|
76
|
+
for (let i = 0; i < selectedFields.length; i++) {
|
|
77
|
+
const property = this.orm.getProperty(selectedFields[i]);
|
|
78
|
+
if (!property)
|
|
79
|
+
throw Error("Unknown field name [" + selectedFields[i] + "] in $select");
|
|
80
|
+
builder = builder.column(property.column);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
builder = builder.from(this.orm.table).where(this.orm.getPrimaryKey().column + "=?", [this.orm.getPrimaryKey()]);
|
|
84
|
+
return builder;
|
|
85
|
+
};
|
|
86
|
+
ORMStatements.prototype.count = function(settings) {
|
|
87
|
+
const builder = this.dialect.select().column("COUNT(*)").from(this.orm.table);
|
|
88
|
+
addFilter(this.orm, builder, settings);
|
|
89
|
+
return builder;
|
|
90
|
+
};
|
|
91
|
+
ORMStatements.prototype.list = function(settings) {
|
|
92
|
+
let i;
|
|
93
|
+
settings = settings || {};
|
|
94
|
+
const sort = settings.$sort || settings.sort;
|
|
95
|
+
const order = settings.$order || settings.order;
|
|
96
|
+
const selectedFields = settings.$select || settings.select;
|
|
97
|
+
const builder = this.dialect.select().from(this.orm.table);
|
|
98
|
+
if (selectedFields) {
|
|
99
|
+
for (i = 0; i < selectedFields.length; i++) {
|
|
100
|
+
const property = this.orm.getProperty(selectedFields[i]);
|
|
101
|
+
if (!property)
|
|
102
|
+
throw Error("Unknown field name [" + selectedFields[i] + "] in $select");
|
|
103
|
+
builder.column(property.column);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
addFilter(this.orm, builder, settings);
|
|
107
|
+
const propertyDefinitions = this.orm.properties.filter(function(property) {
|
|
108
|
+
for (var settingName in settings) {
|
|
109
|
+
if (settingName === property.name)
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
});
|
|
114
|
+
if (propertyDefinitions.length > 0) {
|
|
115
|
+
for (i = 0; i < propertyDefinitions.length; i++) {
|
|
116
|
+
const def = propertyDefinitions[i];
|
|
117
|
+
if (settings?.$filter && settings.$filter?.indexOf(def.name) > -1) {
|
|
118
|
+
builder.where(def.column + " LIKE ?", [def]);
|
|
119
|
+
} else {
|
|
120
|
+
const val = settings[def.name];
|
|
121
|
+
if (val === null || val === void 0) {
|
|
122
|
+
builder.where(def.column + " IS NULL", [def]);
|
|
123
|
+
} else {
|
|
124
|
+
if (val.indexOf && val.indexOf(">") > -1) {
|
|
125
|
+
builder.where(def.column + " > ?", [def]);
|
|
126
|
+
} else if (val.indexOf && val.indexOf("<") > -1) {
|
|
127
|
+
builder.where(def.column + " < ?", [def]);
|
|
128
|
+
} else {
|
|
129
|
+
builder.where(def.column + "=?", [def]);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (sort !== void 0) {
|
|
136
|
+
var _sort = sort.split(",");
|
|
137
|
+
for (i = 0; i < _sort.length; i++) {
|
|
138
|
+
let _order = true;
|
|
139
|
+
if (order !== void 0) {
|
|
140
|
+
if (["asc", "desc"].indexOf(String(order).toLowerCase()) > -1) {
|
|
141
|
+
_order = order.toLowerCase() === "desc" ? false : true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (this.orm.getProperty(_sort[i])) {
|
|
145
|
+
builder.order(this.orm.getProperty(_sort[i]).column, _order);
|
|
146
|
+
} else {
|
|
147
|
+
console.error("Column: " + _sort[i] + " not present in " + JSON.stringify(this.orm));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
addLimit(builder, settings);
|
|
152
|
+
addOffset(builder, settings);
|
|
153
|
+
return builder;
|
|
154
|
+
};
|
|
155
|
+
function addFilter(orm, builder, settings) {
|
|
156
|
+
if (settings?.$filter) {
|
|
157
|
+
const equalsPropertiesKeys = Object.keys(settings.$filter.equals ?? []);
|
|
158
|
+
const notEqualsPropertiesKeys = Object.keys(settings.$filter.notEquals ?? []);
|
|
159
|
+
const containsPropertiesKeys = Object.keys(settings.$filter.contains ?? []);
|
|
160
|
+
const greaterThanPropertiesKeys = Object.keys(settings.$filter.greaterThan ?? []);
|
|
161
|
+
const lessThanPropertiesKeys = Object.keys(settings.$filter.lessThan ?? []);
|
|
162
|
+
const greaterThanOrEqualPropertiesKeys = Object.keys(settings.$filter.greaterThanOrEqual ?? []);
|
|
163
|
+
const lessThanOrEqualPropertiesKeys = Object.keys(settings.$filter.lessThanOrEqual ?? []);
|
|
164
|
+
const equalsProperties = orm.properties.filter((e) => equalsPropertiesKeys.includes(e.name));
|
|
165
|
+
const notEqualsProperties = orm.properties.filter((e) => notEqualsPropertiesKeys.includes(e.name));
|
|
166
|
+
const containsProperties = orm.properties.filter((e) => containsPropertiesKeys.includes(e.name));
|
|
167
|
+
const greaterThanProperties = orm.properties.filter((e) => greaterThanPropertiesKeys.includes(e.name));
|
|
168
|
+
const lessThanProperties = orm.properties.filter((e) => lessThanPropertiesKeys.includes(e.name));
|
|
169
|
+
const greaterThanOrEqualProperties = orm.properties.filter((e) => greaterThanOrEqualPropertiesKeys.includes(e.name));
|
|
170
|
+
const lessThanOrEqualProperties = orm.properties.filter((e) => lessThanOrEqualPropertiesKeys.includes(e.name));
|
|
171
|
+
equalsProperties.forEach((e) => {
|
|
172
|
+
const value = settings.$filter.equals[e.name];
|
|
173
|
+
if (value === null || value === void 0) {
|
|
174
|
+
builder.where(e.column + " IS NULL", [e]);
|
|
175
|
+
} else if (Array.isArray(value)) {
|
|
176
|
+
builder.where(`${e.column} IN (${value.map((v) => "?").join(", ")})`, [e]);
|
|
177
|
+
} else {
|
|
178
|
+
builder.where(`${e.column} = ?`, [e]);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
notEqualsProperties.forEach((e) => {
|
|
182
|
+
const value = settings.$filter.notEquals[e.name];
|
|
183
|
+
if (value === null || value === void 0) {
|
|
184
|
+
builder.where(e.column + " IS NOT NULL", [e]);
|
|
185
|
+
} else if (Array.isArray(value)) {
|
|
186
|
+
builder.where(`${e.column} NOT IN (${value.map((v) => "?").join(", ")})`, [e]);
|
|
187
|
+
} else {
|
|
188
|
+
builder.where(`${e.column} != ?`, [e]);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
containsProperties.forEach((e) => builder.where(`${e.column} LIKE ?`, [e]));
|
|
192
|
+
greaterThanProperties.forEach((e) => builder.where(`${e.column} > ?`, [e]));
|
|
193
|
+
lessThanProperties.forEach((e) => builder.where(`${e.column} < ?`, [e]));
|
|
194
|
+
greaterThanOrEqualProperties.forEach((e) => builder.where(`${e.column} >= ?`, [e]));
|
|
195
|
+
lessThanOrEqualProperties.forEach((e) => builder.where(`${e.column} <= ?`, [e]));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function addLimit(builder, settings) {
|
|
199
|
+
const limit = settings.$limit ?? settings.limit;
|
|
200
|
+
if (limit !== void 0) {
|
|
201
|
+
builder.limit(parseInt(limit, 10));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function addOffset(builder, settings) {
|
|
205
|
+
const offset = settings.$offset ?? settings.offset;
|
|
206
|
+
if (offset !== void 0) {
|
|
207
|
+
builder.offset(parseInt(offset, 10));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function create(orm, connection) {
|
|
211
|
+
let dialect;
|
|
212
|
+
if (connection) {
|
|
213
|
+
dialect = SQLBuilder.getDialect(connection);
|
|
214
|
+
}
|
|
215
|
+
const stmnts = new ORMStatements(orm, dialect);
|
|
216
|
+
return stmnts;
|
|
217
|
+
}
|
|
218
|
+
;
|
|
219
|
+
export {
|
|
220
|
+
ORMStatements,
|
|
221
|
+
create
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL29ybXN0YXRlbWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9sb2dcIjtcbmltcG9ydCB7IENyZWF0ZVRhYmxlQnVpbGRlciwgRGVsZXRlQnVpbGRlciwgRHJvcFRhYmxlQnVpbGRlciwgSW5zZXJ0QnVpbGRlciwgU2VsZWN0QnVpbGRlciwgU1FMQnVpbGRlciwgVXBkYXRlQnVpbGRlciB9IGZyb20gXCIuL3NxbFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiB9IGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBPUk1TdGF0ZW1lbnRzKG9ybSwgZGlhbGVjdDogU1FMQnVpbGRlcikge1xuXHR0aGlzLiRsb2cgPSBMb2dnaW5nLmdldExvZ2dlcignZGIuZGFvLm9ybXN0YXRlbWVudHMnKTtcblx0dGhpcy5vcm0gPSBvcm07XG5cdHRoaXMub3JtLnRhYmxlTmFtZSA9IHRoaXMub3JtLnRhYmxlO1xuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0cHJvcGVydHkuY29sdW1uTmFtZSA9IHByb3BlcnR5LmNvbHVtbjtcblx0fSk7XG5cdHRoaXMuZGlhbGVjdCA9IGRpYWxlY3QgfHwgU1FMQnVpbGRlci5nZXREaWFsZWN0KCk7XG59O1xuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPUk1TdGF0ZW1lbnRzO1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uICgpOiBDcmVhdGVUYWJsZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmNyZWF0ZSgpLnRhYmxlKHRoaXMub3JtLnRhYmxlKTtcblxuXHR0aGlzLm9ybS5wcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Y29uc3QgY29sdW1uID0gdGhpcy5vcm0udG9Db2x1bW4ocHJvcGVydHkpO1xuXHRcdGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdWQVJDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAyNTU7XG5cdFx0XHRidWlsZGVyLmNvbHVtblZhcmNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDSEFSJykge1xuXHRcdFx0aWYgKHByb3BlcnR5Lmxlbmd0aCA9PT0gdW5kZWZpbmVkKVxuXHRcdFx0XHRwcm9wZXJ0eS5sZW5ndGggPSAxO1xuXHRcdFx0cHJvcGVydHkubGVuZ3RoID0gcGFyc2VJbnQocHJvcGVydHkubGVuZ3RoLCAxMCk7XG5cdFx0XHRidWlsZGVyLmNvbHVtbkNoYXIoY29sdW1uLm5hbWUsIHByb3BlcnR5Lmxlbmd0aCwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJ1aWxkZXIuY29sdW1uKGNvbHVtbi5uYW1lLCBjb2x1bW4udHlwZSwgY29sdW1uLnByaW1hcnlLZXkgPT09ICd0cnVlJywgY29sdW1uLm51bGxhYmxlID09PSAndHJ1ZScsIHByb3BlcnR5LnVuaXF1ZSk7XG5cdFx0fVxuXHR9LmJpbmQodGhpcykpO1xuXG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUuZHJvcFRhYmxlID0gZnVuY3Rpb24gKCk6IERyb3BUYWJsZUJ1aWxkZXIge1xuXHRyZXR1cm4gdGhpcy5kaWFsZWN0LmRyb3AoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAoKTogSW5zZXJ0QnVpbGRlciB7XG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3QuaW5zZXJ0KCkuaW50byh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRidWlsZGVyLmNvbHVtbihwcm9wZXJ0eS5jb2x1bW4pLnZhbHVlKCc/JywgcHJvcGVydHkpO1xuXHR9KTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZW50aXR5KTogVXBkYXRlQnVpbGRlciB7XG5cdGlmICghZW50aXR5KVxuXHRcdHRocm93IEVycm9yKCdJbGxlZ2FsIGFyZ3VtZW50OiBlbnRpdHlbJyArIGVudGl0eSArICddJyk7XG5cblx0Y29uc3QgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC51cGRhdGUoKS50YWJsZSh0aGlzLm9ybS50YWJsZSk7XG5cdHRoaXMub3JtLnByb3BlcnRpZXMuZmlsdGVyKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhlbnRpdHkpLmluZGV4T2YocHJvcGVydHkubmFtZSkgPiAtMSAmJiAoIXByb3BlcnR5LmFsbG93ZWRPcHMgfHwgcHJvcGVydHkuYWxsb3dlZE9wcy5pbmRleE9mKCd1cGRhdGUnKSA+IC0xKTtcblx0fSkuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcblx0XHRpZiAoIXByb3BlcnR5LmlkKVxuXHRcdFx0YnVpbGRlci5zZXQocHJvcGVydHkuY29sdW1uLCAnPycsIHByb3BlcnR5KTtcblx0fSk7XG5cdGNvbnN0IHBrUHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCk7XG5cdGJ1aWxkZXIud2hlcmUocGtQcm9wZXJ0eS5jb2x1bW4gKyAnPT8nLCBbcGtQcm9wZXJ0eV0pO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbk9STVN0YXRlbWVudHMucHJvdG90eXBlW1wiZGVsZXRlXCJdID0gT1JNU3RhdGVtZW50cy5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCk6IERlbGV0ZUJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LmRlbGV0ZSgpLmZyb20odGhpcy5vcm0udGFibGUpO1xuXHRpZiAoYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRsZXQgZmlsdGVyRmllbGROYW1lcyA9IGFyZ3VtZW50c1swXTtcblx0XHRpZiAoZmlsdGVyRmllbGROYW1lcy5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpXG5cdFx0XHRmaWx0ZXJGaWVsZE5hbWVzID0gW2ZpbHRlckZpZWxkTmFtZXNdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyRmllbGROYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgcHJvcGVydHkgPSB0aGlzLm9ybS5nZXRQcm9wZXJ0eShmaWx0ZXJGaWVsZE5hbWVzW2ldKTtcblx0XHRcdGlmICghcHJvcGVydHkpXG5cdFx0XHRcdHRocm93IEVycm9yKCdVbmtub3duIHByb3BlcnR5IG5hbWU6ICcgKyBmaWx0ZXJGaWVsZE5hbWVzW2ldICsgXCIgaW4gJGZpbHRlclwiKTtcblx0XHRcdGJ1aWxkZXIud2hlcmUocHJvcGVydHkuY29sdW1uICsgXCI9P1wiLCBbcHJvcGVydHldKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHBhcmFtcyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgYnVpbGRlciA9IHRoaXMuZGlhbGVjdC5zZWxlY3QoKTtcblx0aWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkICYmIHBhcmFtcy5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkRmllbGRzID0gcGFyYW1zLnNlbGVjdC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPyBwYXJhbXMuc2VsZWN0IDogW3BhcmFtcy5zZWxlY3RdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlciA9IGJ1aWxkZXIuY29sdW1uKHByb3BlcnR5LmNvbHVtbik7XG5cdFx0fVxuXHR9XG5cdGJ1aWxkZXIgPSBidWlsZGVyLmZyb20odGhpcy5vcm0udGFibGUpXG5cdFx0LndoZXJlKHRoaXMub3JtLmdldFByaW1hcnlLZXkoKS5jb2x1bW4gKyBcIj0/XCIsIFt0aGlzLm9ybS5nZXRQcmltYXJ5S2V5KCldKTtcblx0cmV0dXJuIGJ1aWxkZXI7XG59O1xuXG5PUk1TdGF0ZW1lbnRzLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRjb25zdCBidWlsZGVyID0gdGhpcy5kaWFsZWN0LnNlbGVjdCgpLmNvbHVtbignQ09VTlQoKiknKS5mcm9tKHRoaXMub3JtLnRhYmxlKTtcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cdHJldHVybiBidWlsZGVyO1xufTtcblxuT1JNU3RhdGVtZW50cy5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uIChzZXR0aW5ncyk6IFNlbGVjdEJ1aWxkZXIge1xuXHRsZXQgaTtcblx0c2V0dGluZ3MgPSBzZXR0aW5ncyB8fCB7fTtcblx0Y29uc3Qgc29ydCA9IHNldHRpbmdzLiRzb3J0IHx8IHNldHRpbmdzLnNvcnQ7XG5cdGNvbnN0IG9yZGVyID0gc2V0dGluZ3MuJG9yZGVyIHx8IHNldHRpbmdzLm9yZGVyO1xuXHRjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHNldHRpbmdzLiRzZWxlY3QgfHwgc2V0dGluZ3Muc2VsZWN0O1xuXG5cdGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmRpYWxlY3Quc2VsZWN0KCkuZnJvbSh0aGlzLm9ybS50YWJsZSk7XG5cblx0Ly9hZGQgc2VsZWN0ZWQgZmllbGRzIGlmIGFueVxuXHRpZiAoc2VsZWN0ZWRGaWVsZHMpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHByb3BlcnR5ID0gdGhpcy5vcm0uZ2V0UHJvcGVydHkoc2VsZWN0ZWRGaWVsZHNbaV0pO1xuXHRcdFx0aWYgKCFwcm9wZXJ0eSlcblx0XHRcdFx0dGhyb3cgRXJyb3IoJ1Vua25vd24gZmllbGQgbmFtZSBbJyArIHNlbGVjdGVkRmllbGRzW2ldICsgJ10gaW4gJHNlbGVjdCcpO1xuXHRcdFx0YnVpbGRlci5jb2x1bW4ocHJvcGVydHkuY29sdW1uKTtcblx0XHR9XG5cdH1cblxuXHQvL2FkZCB3aGVyZSBjbGF1c2UgZm9yIGFueSBmaWVsZHNcblx0YWRkRmlsdGVyKHRoaXMub3JtLCBidWlsZGVyLCBzZXR0aW5ncyk7XG5cblx0Ly8gVE9ETzogVGhlIGZvbGxvd2luZyBjb2RlIG1pZ2h0IG5vdCBiZSBuZWVkZWQgYW55bW9yZVxuXHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb25zID0gdGhpcy5vcm0ucHJvcGVydGllcy5maWx0ZXIoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG5cdFx0Zm9yICh2YXIgc2V0dGluZ05hbWUgaW4gc2V0dGluZ3MpIHtcblx0XHRcdGlmIChzZXR0aW5nTmFtZSA9PT0gcHJvcGVydHkubmFtZSlcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cdGlmIChwcm9wZXJ0eURlZmluaXRpb25zLmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgcHJvcGVydHlEZWZpbml0aW9ucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgZGVmID0gcHJvcGVydHlEZWZpbml0aW9uc1tpXTtcblx0XHRcdGlmIChzZXR0aW5ncz8uJGZpbHRlciAmJiBzZXR0aW5ncy4kZmlsdGVyPy5pbmRleE9mKGRlZi5uYW1lKSA+IC0xKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgTElLRSA/JywgW2RlZl0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmFsID0gc2V0dGluZ3NbZGVmLm5hbWVdO1xuXHRcdFx0XHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJyBJUyBOVUxMJywgW2RlZl0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmICh2YWwuaW5kZXhPZiAmJiB2YWwuaW5kZXhPZignPicpID4gLTEpIHtcblx0XHRcdFx0XHRcdGJ1aWxkZXIud2hlcmUoZGVmLmNvbHVtbiArICcgPiA/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodmFsLmluZGV4T2YgJiYgdmFsLmluZGV4T2YoJzwnKSA+IC0xKSB7XG5cdFx0XHRcdFx0XHRidWlsZGVyLndoZXJlKGRlZi5jb2x1bW4gKyAnIDwgPycsIFtkZWZdKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YnVpbGRlci53aGVyZShkZWYuY29sdW1uICsgJz0/JywgW2RlZl0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChzb3J0ICE9PSB1bmRlZmluZWQpIHtcblx0XHR2YXIgX3NvcnQgPSBzb3J0LnNwbGl0KCcsJyk7XG5cdFx0Zm9yIChpID0gMDsgaSA8IF9zb3J0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgX29yZGVyID0gdHJ1ZTsvL0FTQ1xuXHRcdFx0Ly9UT0RPOiBjaGFuZ2UgdG8gYmUgYWJsZSB0byBvcmRlciBwZXIgc29ydCBwcm9wZXJ0eVxuXHRcdFx0aWYgKG9yZGVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKFsnYXNjJywgJ2Rlc2MnXS5pbmRleE9mKFN0cmluZyhvcmRlcikudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuXHRcdFx0XHRcdF9vcmRlciA9IG9yZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdkZXNjJyA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKSkge1xuXHRcdFx0XHRidWlsZGVyLm9yZGVyKHRoaXMub3JtLmdldFByb3BlcnR5KF9zb3J0W2ldKS5jb2x1bW4sIF9vcmRlcik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdDb2x1bW46ICcgKyBfc29ydFtpXSArICcgbm90IHByZXNlbnQgaW4gJyArIEpTT04uc3RyaW5naWZ5KHRoaXMub3JtKSk7XG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cblx0YWRkTGltaXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRhZGRPZmZzZXQoYnVpbGRlciwgc2V0dGluZ3MpO1xuXHRyZXR1cm4gYnVpbGRlcjtcbn07XG5cbmZ1bmN0aW9uIGFkZEZpbHRlcihvcm0sIGJ1aWxkZXIsIHNldHRpbmdzKSB7XG5cdC8vYWRkIHdoZXJlIGNsYXVzZSBmb3IgYW55IGZpZWxkc1xuXHRpZiAoc2V0dGluZ3M/LiRmaWx0ZXIpIHtcblx0XHRjb25zdCBlcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzID8/IFtdKTtcblx0XHRjb25zdCBjb250YWluc1Byb3BlcnRpZXNLZXlzID0gT2JqZWN0LmtleXMoc2V0dGluZ3MuJGZpbHRlci5jb250YWlucyA/PyBbXSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5Qcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW4gPz8gW10pO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllc0tleXMgPSBPYmplY3Qua2V5cyhzZXR0aW5ncy4kZmlsdGVyLmxlc3NUaGFuID8/IFtdKTtcblx0XHRjb25zdCBncmVhdGVyVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsID8/IFtdKTtcblx0XHRjb25zdCBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cyA9IE9iamVjdC5rZXlzKHNldHRpbmdzLiRmaWx0ZXIubGVzc1RoYW5PckVxdWFsID8/IFtdKTtcblxuXHRcdGNvbnN0IGVxdWFsc1Byb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBlcXVhbHNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBub3RFcXVhbHNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gbm90RXF1YWxzUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgY29udGFpbnNQcm9wZXJ0aWVzID0gb3JtLnByb3BlcnRpZXMuZmlsdGVyKGUgPT4gY29udGFpbnNQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblx0XHRjb25zdCBncmVhdGVyVGhhblByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBncmVhdGVyVGhhblByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGxlc3NUaGFuUHJvcGVydGllc0tleXMuaW5jbHVkZXMoZS5uYW1lKSk7XG5cdFx0Y29uc3QgZ3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcyA9IG9ybS5wcm9wZXJ0aWVzLmZpbHRlcihlID0+IGdyZWF0ZXJUaGFuT3JFcXVhbFByb3BlcnRpZXNLZXlzLmluY2x1ZGVzKGUubmFtZSkpO1xuXHRcdGNvbnN0IGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMgPSBvcm0ucHJvcGVydGllcy5maWx0ZXIoZSA9PiBsZXNzVGhhbk9yRXF1YWxQcm9wZXJ0aWVzS2V5cy5pbmNsdWRlcyhlLm5hbWUpKTtcblxuXHRcdGVxdWFsc1Byb3BlcnRpZXMuZm9yRWFjaChlID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gc2V0dGluZ3MuJGZpbHRlci5lcXVhbHNbZS5uYW1lXTtcblx0XHRcdGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoZS5jb2x1bW4gKyAnIElTIE5VTEwnLCBbZV0pO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID0gP2AsIFtlXSlcblx0XHRcdH1cblx0XHR9KTtcblx0XHRub3RFcXVhbHNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHNldHRpbmdzLiRmaWx0ZXIubm90RXF1YWxzW2UubmFtZV07XG5cdFx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRidWlsZGVyLndoZXJlKGUuY29sdW1uICsgJyBJUyBOT1QgTlVMTCcsIFtlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IE5PVCBJTiAoJHt2YWx1ZS5tYXAodiA9PiAnPycpLmpvaW4oJywgJyl9KWAsIFtlXSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ICE9ID9gLCBbZV0pXG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Y29udGFpbnNQcm9wZXJ0aWVzLmZvckVhY2goZSA9PiBidWlsZGVyLndoZXJlKGAke2UuY29sdW1ufSBMSUtFID9gLCBbZV0pKTtcblx0XHRncmVhdGVyVGhhblByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59ID4gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPCA/YCwgW2VdKSk7XG5cdFx0Z3JlYXRlclRoYW5PckVxdWFsUHJvcGVydGllcy5mb3JFYWNoKGUgPT4gYnVpbGRlci53aGVyZShgJHtlLmNvbHVtbn0gPj0gP2AsIFtlXSkpO1xuXHRcdGxlc3NUaGFuT3JFcXVhbFByb3BlcnRpZXMuZm9yRWFjaChlID0+IGJ1aWxkZXIud2hlcmUoYCR7ZS5jb2x1bW59IDw9ID9gLCBbZV0pKTtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRMaW1pdChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBsaW1pdCA9IHNldHRpbmdzLiRsaW1pdCA/PyBzZXR0aW5ncy5saW1pdDtcblx0aWYgKGxpbWl0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRidWlsZGVyLmxpbWl0KHBhcnNlSW50KGxpbWl0LCAxMCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFkZE9mZnNldChidWlsZGVyLCBzZXR0aW5ncykge1xuXHRjb25zdCBvZmZzZXQgPSBzZXR0aW5ncy4kb2Zmc2V0ID8/IHNldHRpbmdzLm9mZnNldDtcblx0aWYgKG9mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0YnVpbGRlci5vZmZzZXQocGFyc2VJbnQob2Zmc2V0LCAxMCkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGUob3JtLCBjb25uZWN0aW9uPzogQ29ubmVjdGlvbikge1xuXHRsZXQgZGlhbGVjdDtcblx0aWYgKGNvbm5lY3Rpb24pIHtcblx0XHRkaWFsZWN0ID0gU1FMQnVpbGRlci5nZXREaWFsZWN0KGNvbm5lY3Rpb24pO1xuXHR9XG5cblx0Y29uc3Qgc3RtbnRzID0gbmV3IE9STVN0YXRlbWVudHMob3JtLCBkaWFsZWN0KTtcblx0cmV0dXJuIHN0bW50cztcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFFQSxTQUFTLGVBQWU7QUFDeEIsU0FBNEYsa0JBQWlDO0FBR3RILFNBQVMsY0FBYyxLQUFLLFNBQXFCO0FBQ3ZELE9BQUssT0FBTyxRQUFRLFVBQVUsc0JBQXNCO0FBQ3BELE9BQUssTUFBTTtBQUNYLE9BQUssSUFBSSxZQUFZLEtBQUssSUFBSTtBQUM5QixPQUFLLElBQUksV0FBVyxRQUFRLFNBQVUsVUFBVTtBQUMvQyxhQUFTLGFBQWEsU0FBUztBQUFBLEVBQ2hDLENBQUM7QUFDRCxPQUFLLFVBQVUsV0FBVyxXQUFXLFdBQVc7QUFDakQ7QUFBQztBQUNELGNBQWMsVUFBVSxjQUFjO0FBRXRDLGNBQWMsVUFBVSxjQUFjLFdBQWdDO0FBQ3JFLFFBQU0sVUFBVSxLQUFLLFFBQVEsT0FBTyxFQUFFLE1BQU0sS0FBSyxJQUFJLEtBQUs7QUFFMUQsT0FBSyxJQUFJLFdBQVcsUUFBUSxTQUFVLFVBQVU7QUFDL0MsVUFBTSxTQUFTLEtBQUssSUFBSSxTQUFTLFFBQVE7QUFDekMsUUFBSSxTQUFTLEtBQUssWUFBWSxNQUFNLFdBQVc7QUFDOUMsVUFBSSxTQUFTLFdBQVc7QUFDdkIsaUJBQVMsU0FBUztBQUNuQixjQUFRLGNBQWMsT0FBTyxNQUFNLFNBQVMsUUFBUSxPQUFPLGVB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
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Update } from "./update";
|
|
2
|
+
import { Database } from "./database";
|
|
3
|
+
class Procedure {
|
|
4
|
+
/**
|
|
5
|
+
* Executes a DDL/DML statement to create or modify a stored procedure without results.
|
|
6
|
+
* * @param {string} sql The SQL statement (e.g., CREATE PROCEDURE).
|
|
7
|
+
* @param {string} [datasourceName] Optional name of the data source to use.
|
|
8
|
+
*/
|
|
9
|
+
static create(sql, datasourceName) {
|
|
10
|
+
Update.execute(sql, [], datasourceName);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Executes a stored procedure call and returns the result set(s).
|
|
14
|
+
* * @param {string} sql The callable statement (e.g., {CALL my_procedure(?, ?)}).
|
|
15
|
+
* @param {(string | number | ProcedureParameter)[]} [parameters=[]] An array of parameters. Primitives (string/number) are automatically typed. Use ProcedureParameter for explicit types.
|
|
16
|
+
* @param {string} [datasourceName] Optional name of the data source to use.
|
|
17
|
+
* @returns {any[]} An array of JSON objects representing the result set(s).
|
|
18
|
+
*/
|
|
19
|
+
static execute(sql, parameters = [], datasourceName) {
|
|
20
|
+
const result = [];
|
|
21
|
+
let connection = null;
|
|
22
|
+
let callableStatement = null;
|
|
23
|
+
let resultSet = null;
|
|
24
|
+
try {
|
|
25
|
+
let hasMoreResults = false;
|
|
26
|
+
connection = Database.getConnection(datasourceName);
|
|
27
|
+
callableStatement = connection.prepareCall(sql);
|
|
28
|
+
const mappedParameters = parameters.map((parameter) => {
|
|
29
|
+
if (parameter && typeof parameter === "object" && "type" in parameter && "value" in parameter) {
|
|
30
|
+
return parameter;
|
|
31
|
+
}
|
|
32
|
+
let type;
|
|
33
|
+
let value;
|
|
34
|
+
if (typeof parameter === "string") {
|
|
35
|
+
type = "string";
|
|
36
|
+
value = parameter;
|
|
37
|
+
} else if (typeof parameter === "number") {
|
|
38
|
+
type = parameter % 1 === 0 ? "int" : "double";
|
|
39
|
+
value = parameter;
|
|
40
|
+
} else {
|
|
41
|
+
throw new Error(`Procedure Call - Unsupported parameter type [${typeof parameter}]`);
|
|
42
|
+
}
|
|
43
|
+
return { value, type };
|
|
44
|
+
});
|
|
45
|
+
for (let i = 0; i < mappedParameters.length; i++) {
|
|
46
|
+
switch (mappedParameters[i].type) {
|
|
47
|
+
case "string":
|
|
48
|
+
callableStatement.setString(i + 1, mappedParameters[i].value);
|
|
49
|
+
break;
|
|
50
|
+
case "int":
|
|
51
|
+
case "integer":
|
|
52
|
+
case "number":
|
|
53
|
+
callableStatement.setInt(i + 1, mappedParameters[i].value);
|
|
54
|
+
break;
|
|
55
|
+
case "float":
|
|
56
|
+
callableStatement.setFloat(i + 1, mappedParameters[i].value);
|
|
57
|
+
break;
|
|
58
|
+
case "double":
|
|
59
|
+
callableStatement.setDouble(i + 1, mappedParameters[i].value);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
resultSet = callableStatement.executeQuery();
|
|
64
|
+
do {
|
|
65
|
+
result.push(JSON.parse(resultSet.toJson()));
|
|
66
|
+
hasMoreResults = callableStatement.getMoreResults();
|
|
67
|
+
if (hasMoreResults) {
|
|
68
|
+
resultSet.close();
|
|
69
|
+
resultSet = callableStatement.getResultSet();
|
|
70
|
+
}
|
|
71
|
+
} while (hasMoreResults);
|
|
72
|
+
callableStatement.close();
|
|
73
|
+
} finally {
|
|
74
|
+
if (resultSet != null) {
|
|
75
|
+
resultSet.close();
|
|
76
|
+
}
|
|
77
|
+
if (callableStatement != null) {
|
|
78
|
+
callableStatement.close();
|
|
79
|
+
}
|
|
80
|
+
if (connection != null) {
|
|
81
|
+
connection.close();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (typeof module !== "undefined") {
|
|
88
|
+
module.exports = Procedure;
|
|
89
|
+
}
|
|
90
|
+
export {
|
|
91
|
+
Procedure
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3Byb2NlZHVyZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBBUEkgUHJvY2VkdXJlXG4gKlxuICovXG5pbXBvcnQgeyBVcGRhdGUgfSBmcm9tIFwiLi91cGRhdGVcIjtcbmltcG9ydCB7IERhdGFiYXNlIH0gZnJvbSBcIi4vZGF0YWJhc2VcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFByb2NlZHVyZVBhcmFtZXRlclxuICogQGRlc2NyaXB0aW9uIERlZmluZXMgYSBzdHJ1Y3R1cmVkIHBhcmFtZXRlciBmb3IgcHJvY2VkdXJlIGNhbGxzLCBhbGxvd2luZyB0aGUgdHlwZSBcbiAqIHRvIGJlIGV4cGxpY2l0bHkgZGVmaW5lZCB3aGVuIHRoZSBuYXR1cmFsIEphdmFTY3JpcHQgdHlwZSBtYXBwaW5nIGlzIGluc3VmZmljaWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZWR1cmVQYXJhbWV0ZXIge1xuXHR0eXBlOiBzdHJpbmc7IC8vIFJlbW92ZWQgcmVhZG9ubHkgdG8gYWxsb3cgYXNzaWdubWVudCBkdXJpbmcgcGFyYW1ldGVyIG1hcHBpbmdcblx0dmFsdWU6IGFueTsgICAvLyBSZW1vdmVkIHJlYWRvbmx5XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9jZWR1cmUge1xuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgYSBEREwvRE1MIHN0YXRlbWVudCB0byBjcmVhdGUgb3IgbW9kaWZ5IGEgc3RvcmVkIHByb2NlZHVyZSB3aXRob3V0IHJlc3VsdHMuXG4gICAgICogKiBAcGFyYW0ge3N0cmluZ30gc3FsIFRoZSBTUUwgc3RhdGVtZW50IChlLmcuLCBDUkVBVEUgUFJPQ0VEVVJFKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2RhdGFzb3VyY2VOYW1lXSBPcHRpb25hbCBuYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoc3FsOiBzdHJpbmcsIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFVwZGF0ZS5leGVjdXRlKHNxbCwgW10sIGRhdGFzb3VyY2VOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIHN0b3JlZCBwcm9jZWR1cmUgY2FsbCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldChzKS5cbiAgICAgKiAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgVGhlIGNhbGxhYmxlIHN0YXRlbWVudCAoZS5nLiwge0NBTEwgbXlfcHJvY2VkdXJlKD8sID8pfSkuXG4gICAgICogQHBhcmFtIHsoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdfSBbcGFyYW1ldGVycz1bXV0gQW4gYXJyYXkgb2YgcGFyYW1ldGVycy4gUHJpbWl0aXZlcyAoc3RyaW5nL251bWJlcikgYXJlIGF1dG9tYXRpY2FsbHkgdHlwZWQuIFVzZSBQcm9jZWR1cmVQYXJhbWV0ZXIgZm9yIGV4cGxpY2l0IHR5cGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGF0YXNvdXJjZU5hbWVdIE9wdGlvbmFsIG5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7YW55W119IEFuIGFycmF5IG9mIEpTT04gb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBzZXQocykuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzOiAoc3RyaW5nIHwgbnVtYmVyIHwgUHJvY2VkdXJlUGFyYW1ldGVyKVtdID0gW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgICAgICBsZXQgY29ubmVjdGlvbiA9IG51bGw7XG4gICAgICAgIGxldCBjYWxsYWJsZVN0YXRlbWVudCA9IG51bGw7XG4gICAgICAgIGxldCByZXN1bHRTZXQgPSBudWxsO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgaGFzTW9yZVJlc3VsdHMgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29ubmVjdGlvbiA9IERhdGFiYXNlLmdldENvbm5lY3Rpb24oZGF0YXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVDYWxsKHNxbCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFBhcmFtZXRlcnM6IFByb2NlZHVyZVBhcmFtZXRlcltdID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIDEuIElmIHRoZSBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IGFuZCBsb29rcyBsaWtlIGEgUHJvY2VkdXJlUGFyYW1ldGVyLCB1c2UgaXQgZGlyZWN0bHkuXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlciAmJiB0eXBlb2YgcGFyYW1ldGVyID09PSBcIm9iamVjdFwiICYmICd0eXBlJyBpbiBwYXJhbWV0ZXIgJiYgJ3ZhbHVlJyBpbiBwYXJhbWV0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlciBhcyBQcm9jZWR1cmVQYXJhbWV0ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gMi4gSGFuZGxlIHByaW1pdGl2ZSB0eXBlcyAoc3RyaW5nIG9yIG51bWJlcikgYnkgZXhwbGljaXRseSBuYXJyb3dpbmcgdGhlIHR5cGUuXG4gICAgICAgICAgICAgICAgbGV0IHR5cGU6IHN0cmluZztcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcInN0cmluZ1wiO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtZXRlcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbWV0ZXIgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBpcyBjb3JyZWN0bHkgbmFycm93ZWQgdG8gJ251bWJlcicgaGVyZSwgcmVzb2x2aW5nIHRoZSBUUzIzNjIgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJhbWV0ZXIgJSAxID09PSAwID8gXCJpbnRcIiA6IFwiZG91YmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW1ldGVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRocm93IGVycm9yIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgcmVjb2duaXplZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2NlZHVyZSBDYWxsIC0gVW5zdXBwb3J0ZWQgcGFyYW1ldGVyIHR5cGUgWyR7dHlwZW9mIHBhcmFtZXRlcn1dYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIHR5cGUgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcHBlZFBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hcHBlZFBhcmFtZXRlcnNbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXRTdHJpbmcoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVTdGF0ZW1lbnQuc2V0SW50KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZmxvYXRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LnNldEZsb2F0KGkgKyAxLCBtYXBwZWRQYXJhbWV0ZXJzW2ldLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZG91YmxlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5zZXREb3VibGUoaSArIDEsIG1hcHBlZFBhcmFtZXRlcnNbaV0udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0U2V0ID0gY2FsbGFibGVTdGF0ZW1lbnQuZXhlY3V0ZVF1ZXJ5KCk7XG5cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChKU09OLnBhcnNlKHJlc3VsdFNldC50b0pzb24oKSkpO1xuICAgICAgICAgICAgICAgIGhhc01vcmVSZXN1bHRzID0gY2FsbGFibGVTdGF0ZW1lbnQuZ2V0TW9yZVJlc3VsdHMoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzTW9yZVJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFNldCA9IGNhbGxhYmxlU3RhdGVtZW50LmdldFJlc3VsdFNldCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKGhhc01vcmVSZXN1bHRzKVxuXG4gICAgICAgICAgICBjYWxsYWJsZVN0YXRlbWVudC5jbG9zZSgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdFNldCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0U2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FsbGFibGVTdGF0ZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNhbGxhYmxlU3RhdGVtZW50LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFByb2NlZHVyZTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFTLGNBQWM7QUFDdkIsU0FBUyxnQkFBZ0I7QUFZbEIsTUFBTSxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT25CLE9BQWMsT0FBTyxLQUFhLGdCQUErQjtBQUM3RCxXQUFPLFFBQVEsS0FBSyxDQUFDLEdBQUcsY0FBYztBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsUUFBUSxLQUFhLGFBQXVELENBQUMsR0FBRyxnQkFBZ0M7QUFDMUgsVUFBTSxTQUFTLENBQUM7QUFFaEIsUUFBSSxhQUFhO0FBQ2pCLFFBQUksb0JBQW9CO0FBQ3hCLFFBQUksWUFBWTtBQUVoQixRQUFJO0FBQ0EsVUFBSSxpQkFBaUI7QUFFckIsbUJBQWEsU0FBUyxjQUFjLGNBQWM7QUFDbEQsMEJBQW9CLFdBQVcsWUFBWSxHQUFHO0FBRTlDLFlBQU0sbUJBQXlDLFdBQVcsSUFBSSxDQUFDLGNBQWM7QUFHekUsWUFBSSxhQUFhLE9BQU8sY0FBYyxZQUFZLFVBQVUsYUFBYSxXQUFXLFdBQVc7QUFDM0YsaUJBQU87QUFBQSxRQUNYO0FBR0EsWUFBSTtBQUNKLFlBQUk7QUFFSixZQUFJLE9BQU8sY0FBYyxVQUFVO0FBQy9CLGlCQUFPO0FBQ1Asa0JBQVE7QUFBQSxRQUNaLFdBQVcsT0FBTyxjQUFjLFVBQVU7QUFFdEMsaUJBQU8sWUFBWSxNQUFNLElBQUksUUFBUTtBQUNyQyxrQkFBUTtBQUFBLFFBQ1osT0FBTztBQUVILGdCQUFNLElBQUksTUFBTSxnREFBZ0QsT0FBTyxTQUFTLEdBQUc7QUFBQSxRQUN2RjtBQUVBLGVBQU8sRUFBRSxPQUFPLEtBQUs7QUFBQSxNQUN6QixDQUFDO0FBRUQsZUFBUyxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsUUFBUSxLQUFLO0FBQzlDLGdCQUFRLGlCQUFpQixDQUFDLEVBQUUsTUFBTTtBQUFBLFVBQzlCLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsVUFDSixLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQUEsVUFDTCxLQUFLO0FBQ0QsOEJBQWtCLE9BQU8sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsS0FBSztBQUN6RDtBQUFBLFVBQ0osS0FBSztBQUNELDhCQUFrQixTQUFTLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7QUFDM0Q7QUFBQSxVQUNKLEtBQUs7QUFDRCw4QkFBa0IsVUFBVSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxLQUFLO0FBQzVEO0FBQUEsUUFDUjtBQUFBLE1BQ0o7QUFDQSxrQkFBWSxrQkFBa0IsYUFBYTtBQUUzQyxTQUFHO0FBQ0MsZUFBTyxLQUFLLEtBQUssTUFBTSxVQUFVLE9BQU8sQ0FBQyxDQUFDO0FBQzFDLHlCQUFpQixrQkFBa0IsZUFBZTtBQUNsRCxZQUFJLGdCQUFnQjtBQUNoQixvQkFBVSxNQUFNO0FBQ2hCLHNCQUFZLGtCQUFrQixhQUFhO0FBQUEsUUFDL0M7QUFBQSxNQUNKLFNBQVM7QUFFVCx3QkFBa0IsTUFBTTtBQUFBLElBQzVCLFVBQUU7QUFDRSxVQUFJLGFBQWEsTUFBTTtBQUNuQixrQkFBVSxNQUFNO0FBQUEsTUFDcEI7QUFDQSxVQUFJLHFCQUFxQixNQUFNO0FBQzNCLDBCQUFrQixNQUFNO0FBQUEsTUFDNUI7QUFDQSxVQUFJLGNBQWMsTUFBTTtBQUNwQixtQkFBVyxNQUFNO0FBQUEsTUFDckI7QUFBQSxJQUNKO0FBQ0EsV0FBTztBQUFBLEVBQ1g7QUFDSjtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const DatabaseFacade = Java.type("org.eclipse.dirigible.components.api.db.DatabaseFacade");
|
|
2
|
+
class Query {
|
|
3
|
+
/**
|
|
4
|
+
* Executes a standard SQL query with positional parameters ('?').
|
|
5
|
+
*
|
|
6
|
+
* @param sql The SQL query to execute.
|
|
7
|
+
* @param parameters An optional array of values (primitives or QueryParameter objects) to replace '?' placeholders.
|
|
8
|
+
* @param datasourceName The name of the database connection to use (optional).
|
|
9
|
+
* @param resultParameter Optional formatting parameters for the result set (e.g., date format).
|
|
10
|
+
* @returns An array of records representing the query results.
|
|
11
|
+
*/
|
|
12
|
+
static execute(sql, parameters, datasourceName, resultParameter) {
|
|
13
|
+
const paramsJson = parameters ? JSON.stringify(parameters) : void 0;
|
|
14
|
+
const resultParamsJson = resultParameter ? JSON.stringify(resultParameter) : void 0;
|
|
15
|
+
const resultset = DatabaseFacade.query(sql, paramsJson, datasourceName, resultParamsJson);
|
|
16
|
+
return JSON.parse(resultset);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Executes a SQL query with named parameters (e.g., ":name", ":id").
|
|
20
|
+
*
|
|
21
|
+
* @param sql The SQL query to execute.
|
|
22
|
+
* @param parameters An optional array of NamedQueryParameter objects.
|
|
23
|
+
* @param datasourceName The name of the database connection to use (optional).
|
|
24
|
+
* @returns An array of records representing the query results.
|
|
25
|
+
*/
|
|
26
|
+
static executeNamed(sql, parameters, datasourceName) {
|
|
27
|
+
const paramsJson = parameters ? JSON.stringify(parameters) : void 0;
|
|
28
|
+
const resultset = DatabaseFacade.queryNamed(sql, paramsJson, datasourceName);
|
|
29
|
+
return JSON.parse(resultset);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (typeof module !== "undefined") {
|
|
33
|
+
module.exports = Query;
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
Query
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3F1ZXJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBRdWVyeVxuICpcbiAqL1xuXG4vLyBKYXZhLnR5cGUgaW1wb3J0cyBhcmUgbmVjZXNzYXJ5IGZvciBlbnZpcm9ubWVudHMgbGlrZSBEaXJpZ2libGUvUmhpbm9cbmNvbnN0IERhdGFiYXNlRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmRiLkRhdGFiYXNlRmFjYWRlXCIpO1xuXG4vKipcbiAqIEludGVyZmFjZSB1c2VkIHRvIHdyYXAgY29tcGxleCBvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIG5vbi1uYW1lZCBxdWVyaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1ldGVyIHtcblx0cmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pbmcgYSBwYXJhbWV0ZXIgZm9yIGEgbmFtZWQgcXVlcnkgKHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIDpwYXJhbU5hbWUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkUXVlcnlQYXJhbWV0ZXIge1xuXHRyZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblx0cmVhZG9ubHkgdmFsdWU6IGFueTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gc3BlY2lmeSBmb3JtYXR0aW5nIG9wdGlvbnMgZm9yIHRoZSBxdWVyeSByZXN1bHQgc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc3VsdFBhcmFtZXRlciB7XG5cdHJlYWRvbmx5IGRhdGVGb3JtYXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBzdGF0aWMgbWV0aG9kcyBmb3IgZXhlY3V0aW5nIHBhcmFtZXRlcml6ZWQgU1FMIFNFTEVDVCBzdGF0ZW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgUXVlcnkge1xuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyBhIHN0YW5kYXJkIFNRTCBxdWVyeSB3aXRoIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAoJz8nKS5cblx0ICpcblx0ICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIEFuIG9wdGlvbmFsIGFycmF5IG9mIHZhbHVlcyAocHJpbWl0aXZlcyBvciBRdWVyeVBhcmFtZXRlciBvYmplY3RzKSB0byByZXBsYWNlICc/JyBwbGFjZWhvbGRlcnMuXG5cdCAqIEBwYXJhbSBkYXRhc291cmNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UgKG9wdGlvbmFsKS5cblx0ICogQHBhcmFtIHJlc3VsdFBhcmFtZXRlciBPcHRpb25hbCBmb3JtYXR0aW5nIHBhcmFtZXRlcnMgZm9yIHRoZSByZXN1bHQgc2V0IChlLmcuLCBkYXRlIGZvcm1hdCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlKHNxbDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgUXVlcnlQYXJhbWV0ZXIpW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nLCAgcmVzdWx0UGFyYW1ldGVyPzogUmVzdWx0UGFyYW1ldGVyKTogYW55W10ge1xuXHRcdC8vIFNlcmlhbGl6ZSBwYXJhbWV0ZXJzIGFuZCByZXN1bHQgcGFyYW1ldGVycyBmb3IgdGhlIEphdmEgZmFjYWRlXG5cdFx0Y29uc3QgcGFyYW1zSnNvbiA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCByZXN1bHRQYXJhbXNKc29uID0gcmVzdWx0UGFyYW1ldGVyID8gSlNPTi5zdHJpbmdpZnkocmVzdWx0UGFyYW1ldGVyKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIFRoZSBEYXRhYmFzZUZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdCBzZXRcblx0XHRjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeShzcWwsIHBhcmFtc0pzb24sIGRhdGFzb3VyY2VOYW1lLCByZXN1bHRQYXJhbXNKc29uKTtcblxuXHRcdC8vIFBhcnNlIHRoZSBKU09OIHN0cmluZyBiYWNrIGludG8gYSBKYXZhU2NyaXB0IGFycmF5IG9mIG9iamVjdHNcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShyZXN1bHRzZXQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgd2l0aCBuYW1lZCBwYXJhbWV0ZXJzIChlLmcuLCBcIjpuYW1lXCIsIFwiOmlkXCIpLlxuXHQgKlxuXHQgKiBAcGFyYW0gc3FsIFRoZSBTUUwgcXVlcnkgdG8gZXhlY3V0ZS5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgQW4gb3B0aW9uYWwgYXJyYXkgb2YgTmFtZWRRdWVyeVBhcmFtZXRlciBvYmplY3RzLlxuXHQgKiBAcGFyYW0gZGF0YXNvdXJjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8gdXNlIChvcHRpb25hbCkuXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlY29yZHMgcmVwcmVzZW50aW5nIHRoZSBxdWVyeSByZXN1bHRzLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBleGVjdXRlTmFtZWQoc3FsOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBOYW1lZFF1ZXJ5UGFyYW1ldGVyW10sIGRhdGFzb3VyY2VOYW1lPzogc3RyaW5nKTogYW55W10ge1xuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgYXJyYXkgb2YgbmFtZWQgcGFyYW1ldGVycyBmb3IgdGhlIEphdmEgZmFjYWRlXG5cdFx0Y29uc3QgcGFyYW1zSnNvbiA9IHBhcmFtZXRlcnMgPyBKU09OLnN0cmluZ2lmeShwYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZDtcblxuXHRcdC8vIFRoZSBEYXRhYmFzZUZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdCBzZXRcblx0XHRjb25zdCByZXN1bHRzZXQgPSBEYXRhYmFzZUZhY2FkZS5xdWVyeU5hbWVkKHNxbCwgcGFyYW1zSnNvbiwgZGF0YXNvdXJjZU5hbWUpO1xuXG5cdFx0Ly8gUGFyc2UgdGhlIEpTT04gc3RyaW5nIGJhY2sgaW50byBhIEphdmFTY3JpcHQgYXJyYXkgb2Ygb2JqZWN0c1xuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdHNldCk7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBRdWVyeTtcbn0iXSwKICAibWFwcGluZ3MiOiAiQUFNQSxNQUFNLGlCQUFpQixLQUFLLEtBQUssd0RBQXdEO0FBNEJsRixNQUFNLE1BQU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVdsQixPQUFjLFFBQVEsS0FBYSxZQUFvRSxnQkFBMEIsaUJBQTBDO0FBRTFLLFVBQU0sYUFBYSxhQUFhLEtBQUssVUFBVSxVQUFVLElBQUk7QUFDN0QsVUFBTSxtQkFBbUIsa0JBQWtCLEtBQUssVUFBVSxlQUFlLElBQUk7QUFHN0UsVUFBTSxZQUFZLGVBQWUsTUFBTSxLQUFLLFlBQVksZ0JBQWdCLGdCQUFnQjtBQUd4RixXQUFPLEtBQUssTUFBTSxTQUFTO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVQSxPQUFjLGFBQWEsS0FBYSxZQUFvQyxnQkFBZ0M7QUFFM0csVUFBTSxhQUFhLGFBQWEsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUc3RCxVQUFNLFlBQVksZUFBZSxXQUFXLEtBQUssWUFBWSxjQUFjO0FBRzNFLFdBQU8sS0FBSyxNQUFNLFNBQVM7QUFBQSxFQUM1QjtBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { store, translator } from "@aerokit/sdk/db";
|
|
2
|
+
class Repository {
|
|
3
|
+
constructor(entityConstructor) {
|
|
4
|
+
this.entityConstructor = entityConstructor;
|
|
5
|
+
if (!this.entityConstructor.$entity_name) {
|
|
6
|
+
this.entityConstructor.$entity_name = store.getEntityName(this.entityConstructor.name);
|
|
7
|
+
this.entityConstructor.$table_name = store.getTableName(this.entityConstructor.name);
|
|
8
|
+
this.entityConstructor.$id_name = store.getIdName(this.entityConstructor.name);
|
|
9
|
+
this.entityConstructor.$id_column = store.getIdColumn(this.entityConstructor.name);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
getEntityName() {
|
|
13
|
+
return this.entityConstructor.$entity_name;
|
|
14
|
+
}
|
|
15
|
+
getTableName() {
|
|
16
|
+
return this.entityConstructor.$table_name;
|
|
17
|
+
}
|
|
18
|
+
getIdName() {
|
|
19
|
+
return this.entityConstructor.$id_name;
|
|
20
|
+
}
|
|
21
|
+
getIdColumn() {
|
|
22
|
+
return this.entityConstructor.$id_column;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Finds all entities matching the given options.
|
|
26
|
+
*/
|
|
27
|
+
findAll(options = {}) {
|
|
28
|
+
const list = store.list(this.getEntityName(), options);
|
|
29
|
+
translator.translateList(list, options.language, this.getTableName());
|
|
30
|
+
return list;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Finds a single entity by its primary key ID.
|
|
34
|
+
*/
|
|
35
|
+
findById(id, options = {}) {
|
|
36
|
+
const entity = store.get(this.getEntityName(), id);
|
|
37
|
+
translator.translateEntity(entity, id, options.language, this.getTableName());
|
|
38
|
+
return entity ?? void 0;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new entity in the database.
|
|
42
|
+
* @returns The generated ID (string or number).
|
|
43
|
+
*/
|
|
44
|
+
create(entity) {
|
|
45
|
+
const id = store.save(this.getEntityName(), entity);
|
|
46
|
+
this.triggerEvent({
|
|
47
|
+
operation: "create",
|
|
48
|
+
table: this.getTableName(),
|
|
49
|
+
entity,
|
|
50
|
+
key: {
|
|
51
|
+
name: this.getIdName(),
|
|
52
|
+
column: this.getIdColumn(),
|
|
53
|
+
value: id
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Updates an existing entity.
|
|
60
|
+
* The entity must contain the primary key.
|
|
61
|
+
*/
|
|
62
|
+
update(entity) {
|
|
63
|
+
const idName = this.getIdName();
|
|
64
|
+
const id = entity[idName];
|
|
65
|
+
const previousEntity = this.findById(id);
|
|
66
|
+
store.update(this.getEntityName(), entity);
|
|
67
|
+
this.triggerEvent({
|
|
68
|
+
operation: "update",
|
|
69
|
+
table: this.getTableName(),
|
|
70
|
+
entity,
|
|
71
|
+
previousEntity,
|
|
72
|
+
key: {
|
|
73
|
+
name: idName,
|
|
74
|
+
column: this.getIdColumn(),
|
|
75
|
+
value: id
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Creates the entity if the ID is null/undefined, otherwise updates it.
|
|
81
|
+
* If an ID is provided but the entity doesn't exist, it creates it.
|
|
82
|
+
* @returns The entity's ID.
|
|
83
|
+
*/
|
|
84
|
+
upsert(entity) {
|
|
85
|
+
const id = entity[this.getIdName()];
|
|
86
|
+
if (id === null || id === void 0) {
|
|
87
|
+
return store.save(this.getEntityName(), entity);
|
|
88
|
+
}
|
|
89
|
+
const existingEntity = store.get(this.getEntityName(), id);
|
|
90
|
+
if (existingEntity) {
|
|
91
|
+
this.update(entity);
|
|
92
|
+
return id;
|
|
93
|
+
} else {
|
|
94
|
+
return store.save(this.getEntityName(), entity);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Deletes an entity by its primary key ID.
|
|
99
|
+
*/
|
|
100
|
+
deleteById(id) {
|
|
101
|
+
const entity = store.get(this.getEntityName(), id);
|
|
102
|
+
store.remove(this.getEntityName(), id);
|
|
103
|
+
this.triggerEvent({
|
|
104
|
+
operation: "delete",
|
|
105
|
+
table: this.getTableName(),
|
|
106
|
+
entity,
|
|
107
|
+
key: {
|
|
108
|
+
name: this.getIdName(),
|
|
109
|
+
column: this.getIdColumn(),
|
|
110
|
+
value: id
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Counts the number of entities matching the given options.
|
|
116
|
+
*/
|
|
117
|
+
count(options) {
|
|
118
|
+
return store.count(this.getEntityName(), options);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Protected method intended for subclass overriding or internal event handling.
|
|
122
|
+
*/
|
|
123
|
+
async triggerEvent(_data) {
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export {
|
|
127
|
+
Repository
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3JlcG9zaXRvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHN0b3JlLCB0cmFuc2xhdG9yLCBFbnRpdHlDb25zdHJ1Y3RvciwgT3B0aW9ucyB9IGZyb20gXCJAYWVyb2tpdC9zZGsvZGJcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkYXRhIHN0cnVjdHVyZSBwYXNzZWQgdG8gdGhlIGV2ZW50IHRyaWdnZXIgbWV0aG9kIGJlZm9yZS9hZnRlciBhbiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5RXZlbnQ8VD4ge1xuICAgIHJlYWRvbmx5IG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdkZWxldGUnO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZW50aXR5OiBQYXJ0aWFsPFQ+OyAvLyBVc2UgUGFydGlhbDxUPiBmb3IgY3JlYXRlL2RlbGV0ZSB3aGVyZSBzb21lIGZpZWxkcyBtaWdodCBiZSBtaXNzaW5nXG4gICAgcmVhZG9ubHkga2V5OiB7XG4gICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgfVxuICAgIHJlYWRvbmx5IHByZXZpb3VzRW50aXR5PzogVDtcbn1cblxuXG4vLyAtLS0gUmVwb3NpdG9yeSBDbGFzcyAtLS1cblxuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBkYXRhIGFjY2Vzcy9idXNpbmVzcyBsb2dpYywgd3JhcHBpbmcgdGhlIGBzdG9yZWAgQVBJLlxuICogSXQgaGFuZGxlcyBlbnRpdHkgbWV0YWRhdGEgbG9va3VwLCBDUlVEIG9wZXJhdGlvbnMsIHRyYW5zbGF0aW9uLCBhbmQgZXZlbnQgdHJpZ2dlcmluZy5cbiAqIEB0ZW1wbGF0ZSBUIFRoZSBlbnRpdHkgdHlwZSAobXVzdCBiZSBhbiBvYmplY3QpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVwb3NpdG9yeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuXG4gICAgcHJpdmF0ZSBlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvcihlbnRpdHlDb25zdHJ1Y3RvcjogRW50aXR5Q29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlDb25zdHJ1Y3RvciA9IGVudGl0eUNvbnN0cnVjdG9yO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2FjaGVzIGVudGl0eSBtZXRhZGF0YSAobmFtZSwgdGFibGUsIGlkKSBvbnRvIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3Igc3RhdGljIGFjY2Vzc1xuXHRcdGlmICghdGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUpIHtcbiAgICAgICAgICAgIC8vIEFzc3VtZXMgc3RvcmUgbWV0aG9kcyByZXR1cm4gbm9uLW51bGwgc3RyaW5nc1xuXHRcdFx0dGhpcy5lbnRpdHlDb25zdHJ1Y3Rvci4kZW50aXR5X25hbWUgPSAoc3RvcmUgYXMgYW55KS5nZXRFbnRpdHlOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lID0gKHN0b3JlIGFzIGFueSkuZ2V0VGFibGVOYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lID0gKHN0b3JlIGFzIGFueSkuZ2V0SWROYW1lKHRoaXMuZW50aXR5Q29uc3RydWN0b3IubmFtZSk7XG5cdFx0XHR0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9jb2x1bW4gPSAoc3RvcmUgYXMgYW55KS5nZXRJZENvbHVtbih0aGlzLmVudGl0eUNvbnN0cnVjdG9yLm5hbWUpO1xuXHRcdH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RW50aXR5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBVc2Ugbm9uLW51bGwgYXNzZXJ0aW9uIHNpbmNlIHRoZSBjb25zdHJ1Y3RvciBndWFyYW50ZWVzIHRoZXNlIHByb3BlcnRpZXMgZXhpc3RcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGVudGl0eV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiR0YWJsZV9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudGl0eUNvbnN0cnVjdG9yLiRpZF9uYW1lITtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SWRDb2x1bW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50aXR5Q29uc3RydWN0b3IuJGlkX2NvbHVtbiE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYWxsIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQWxsKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFRbXSB7XG4gICAgICAgIC8vIEFzc3VtZSBzdG9yZS5saXN0IHJldHVybnMgVFtdIGJ1dCB3ZSBleHBsaWNpdGx5IGNhc3QgaXQgdG8gVFtdXG4gICAgICAgIGNvbnN0IGxpc3Q6IFRbXSA9IChzdG9yZSBhcyBhbnkpLmxpc3QodGhpcy5nZXRFbnRpdHlOYW1lKCksIG9wdGlvbnMpO1xuICAgICAgICAodHJhbnNsYXRvciBhcyBhbnkpLnRyYW5zbGF0ZUxpc3QobGlzdCwgb3B0aW9ucy5sYW5ndWFnZSwgdGhpcy5nZXRUYWJsZU5hbWUoKSk7XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGEgc2luZ2xlIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGZpbmRCeUlkKGlkOiBudW1iZXIgfCBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBBc3N1bWUgc3RvcmUuZ2V0IHJldHVybnMgVCBvciBudWxsL3VuZGVmaW5lZFxuICAgICAgICBjb25zdCBlbnRpdHk6IFQgfCBudWxsID0gKHN0b3JlIGFzIGFueSkuZ2V0KHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG4gICAgICAgICh0cmFuc2xhdG9yIGFzIGFueSkudHJhbnNsYXRlRW50aXR5KGVudGl0eSwgaWQsIG9wdGlvbnMubGFuZ3VhZ2UsIHRoaXMuZ2V0VGFibGVOYW1lKCkpO1xuICAgICAgICByZXR1cm4gZW50aXR5ID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGVudGl0eSBpbiB0aGUgZGF0YWJhc2UuXG4gICAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBJRCAoc3RyaW5nIG9yIG51bWJlcikuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShlbnRpdHk6IFQpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICBjb25zdCBpZCA9IChzdG9yZSBhcyBhbnkpLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldElkTmFtZSgpLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5nZXRJZENvbHVtbigpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZW50aXR5LlxuICAgICAqIFRoZSBlbnRpdHkgbXVzdCBjb250YWluIHRoZSBwcmltYXJ5IGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKGVudGl0eTogVCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZE5hbWUgPSB0aGlzLmdldElkTmFtZSgpO1xuICAgICAgICBjb25zdCBpZCA9IGVudGl0eVtpZE5hbWVdIGFzIChudW1iZXIgfCBzdHJpbmcpO1xuICAgICAgICBcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIGVudGl0eSBzdGF0ZSBiZWZvcmUgdXBkYXRlIGZvciB0aGUgZXZlbnQgcGF5bG9hZFxuICAgICAgICBjb25zdCBwcmV2aW91c0VudGl0eSA9IHRoaXMuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIChzdG9yZSBhcyBhbnkpLnVwZGF0ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogXCJ1cGRhdGVcIixcbiAgICAgICAgICAgIHRhYmxlOiB0aGlzLmdldFRhYmxlTmFtZSgpLFxuICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICBwcmV2aW91c0VudGl0eTogcHJldmlvdXNFbnRpdHksXG4gICAgICAgICAgICBrZXk6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBpZE5hbWUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIGVudGl0eSBpZiB0aGUgSUQgaXMgbnVsbC91bmRlZmluZWQsIG90aGVyd2lzZSB1cGRhdGVzIGl0LlxuICAgICAqIElmIGFuIElEIGlzIHByb3ZpZGVkIGJ1dCB0aGUgZW50aXR5IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgaXQuXG4gICAgICogQHJldHVybnMgVGhlIGVudGl0eSdzIElELlxuICAgICAqL1xuICAgIHB1YmxpYyB1cHNlcnQoZW50aXR5OiBUKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaWQgPSBlbnRpdHlbdGhpcy5nZXRJZE5hbWUoKV07XG4gICAgICAgIFxuICAgICAgICAvLyBJZiBubyBJRCBpcyBwcmVzZW50LCBzYXZlIChjcmVhdGUpXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gKHN0b3JlIGFzIGFueSkuc2F2ZSh0aGlzLmdldEVudGl0eU5hbWUoKSwgZW50aXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIElEIGlzIHByZXNlbnQsIGNoZWNrIGV4aXN0ZW5jZVxuICAgICAgICBjb25zdCBleGlzdGluZ0VudGl0eSA9IChzdG9yZSBhcyBhbnkpLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nRW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZShlbnRpdHkpO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSUQgZXhpc3RzLCBidXQgZW50aXR5IGRvZXMgbm90IC0+IHNhdmUgKGNyZWF0ZSB3aXRoIHByb3ZpZGVkIElEKVxuICAgICAgICAgICAgcmV0dXJuIChzdG9yZSBhcyBhbnkpLnNhdmUodGhpcy5nZXRFbnRpdHlOYW1lKCksIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFuIGVudGl0eSBieSBpdHMgcHJpbWFyeSBrZXkgSUQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUJ5SWQoaWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBSZXRyaWV2ZSBlbnRpdHkgYmVmb3JlIHJlbW92YWwgZm9yIHRoZSBldmVudCBwYXlsb2FkXG4gICAgICAgIGNvbnN0IGVudGl0eSA9IChzdG9yZSBhcyBhbnkpLmdldCh0aGlzLmdldEVudGl0eU5hbWUoKSwgaWQpO1xuICAgICAgICBcbiAgICAgICAgKHN0b3JlIGFzIGFueSkucmVtb3ZlKHRoaXMuZ2V0RW50aXR5TmFtZSgpLCBpZCk7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoe1xuICAgICAgICAgICAgb3BlcmF0aW9uOiBcImRlbGV0ZVwiLFxuICAgICAgICAgICAgdGFibGU6IHRoaXMuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIGtleToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0SWROYW1lKCksXG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmdldElkQ29sdW1uKCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGVudGl0aWVzIG1hdGNoaW5nIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb3VudChvcHRpb25zPzogT3B0aW9ucyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoc3RvcmUgYXMgYW55KS5jb3VudCh0aGlzLmdldEVudGl0eU5hbWUoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdGVjdGVkIG1ldGhvZCBpbnRlbmRlZCBmb3Igc3ViY2xhc3Mgb3ZlcnJpZGluZyBvciBpbnRlcm5hbCBldmVudCBoYW5kbGluZy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYXN5bmMgdHJpZ2dlckV2ZW50KF9kYXRhOiBFbnRpdHlFdmVudDxUPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBFbXB0eSBib2R5IGFzIGluIHRoZSBvcmlnaW5hbCBjb2RlXG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxPQUFPLGtCQUE4QztBQXlCdkQsTUFBZSxXQUEwQztBQUFBLEVBSTVELFlBQVksbUJBQXNDO0FBQzlDLFNBQUssb0JBQW9CO0FBRy9CLFFBQUksQ0FBQyxLQUFLLGtCQUFrQixjQUFjO0FBRXpDLFdBQUssa0JBQWtCLGVBQWdCLE1BQWMsY0FBYyxLQUFLLGtCQUFrQixJQUFJO0FBQzlGLFdBQUssa0JBQWtCLGNBQWUsTUFBYyxhQUFhLEtBQUssa0JBQWtCLElBQUk7QUFDNUYsV0FBSyxrQkFBa0IsV0FBWSxNQUFjLFVBQVUsS0FBSyxrQkFBa0IsSUFBSTtBQUN0RixXQUFLLGtCQUFrQixhQUFjLE1BQWMsWUFBWSxLQUFLLGtCQUFrQixJQUFJO0FBQUEsSUFDM0Y7QUFBQSxFQUNFO0FBQUEsRUFFVSxnQkFBd0I7QUFFOUIsV0FBTyxLQUFLLGtCQUFrQjtBQUFBLEVBQ2xDO0FBQUEsRUFFVSxlQUF1QjtBQUM3QixXQUFPLEtBQUssa0JBQWtCO0FBQUEsRUFDbEM7QUFBQSxFQUVVLFlBQW9CO0FBQzFCLFdBQU8sS0FBSyxrQkFBa0I7QUFBQSxFQUNsQztBQUFBLEVBRVUsY0FBc0I7QUFDNUIsV0FBTyxLQUFLLGtCQUFrQjtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFRLFVBQW1CLENBQUMsR0FBUTtBQUV2QyxVQUFNLE9BQWEsTUFBYyxLQUFLLEtBQUssY0FBYyxHQUFHLE9BQU87QUFDbkUsSUFBQyxXQUFtQixjQUFjLE1BQU0sUUFBUSxVQUFVLEtBQUssYUFBYSxDQUFDO0FBQzdFLFdBQU87QUFBQSxFQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxTQUFTLElBQXFC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
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const DatabaseFacade = Java.type("org.eclipse.dirigible.components.api.db.DatabaseFacade");
|
|
2
|
+
class Sequence {
|
|
3
|
+
/**
|
|
4
|
+
* Retrieves the next available value from a specified sequence.
|
|
5
|
+
*
|
|
6
|
+
* @param sequence The name of the database sequence.
|
|
7
|
+
* @param tableName Optional: The name of the table associated with the sequence (depends on database dialect/facade implementation).
|
|
8
|
+
* @param datasourceName Optional: The name of the database connection to use.
|
|
9
|
+
* @returns The next sequence value as a number.
|
|
10
|
+
*/
|
|
11
|
+
static nextval(sequence, tableName, datasourceName) {
|
|
12
|
+
return DatabaseFacade.nextval(sequence, datasourceName, tableName);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new database sequence.
|
|
16
|
+
*
|
|
17
|
+
* @param sequence The name of the sequence to create.
|
|
18
|
+
* @param start Optional: The starting value for the sequence (defaults to 1 if not provided).
|
|
19
|
+
* @param datasourceName Optional: The name of the database connection to use.
|
|
20
|
+
*/
|
|
21
|
+
static create(sequence, start, datasourceName) {
|
|
22
|
+
DatabaseFacade.createSequence(sequence, start, datasourceName);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Drops (deletes) an existing database sequence.
|
|
26
|
+
*
|
|
27
|
+
* @param sequence The name of the sequence to drop.
|
|
28
|
+
* @param datasourceName Optional: The name of the database connection to use.
|
|
29
|
+
*/
|
|
30
|
+
static drop(sequence, datasourceName) {
|
|
31
|
+
DatabaseFacade.dropSequence(sequence, datasourceName);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (typeof module !== "undefined") {
|
|
35
|
+
module.exports = Sequence;
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
Sequence
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RiL3NlcXVlbmNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBTZXF1ZW5jZVxuICpcbiAqIFByb3ZpZGVzIHN0YXRpYyBtZXRob2RzIGZvciBtYW5hZ2luZyBhbmQgYWNjZXNzaW5nIGRhdGFiYXNlIHNlcXVlbmNlcy5cbiAqL1xuXG4vLyBJbXBvcnQgdGhlIEphdmEgdHlwZSB1c2VkIHRvIGJyaWRnZSB0byB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBmdW5jdGlvbmFsaXR5LlxuY29uc3QgRGF0YWJhc2VGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkuZGIuRGF0YWJhc2VGYWNhZGVcIik7XG5cbi8qKlxuICogVXRpbGl0eSBjbGFzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBkYXRhYmFzZSBzZXF1ZW5jZSBvYmplY3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2VxdWVuY2Uge1xuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIG5leHQgYXZhaWxhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpZWQgc2VxdWVuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZXF1ZW5jZSBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2Ugc2VxdWVuY2UuXG5cdCAqIEBwYXJhbSB0YWJsZU5hbWUgT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlcXVlbmNlIChkZXBlbmRzIG9uIGRhdGFiYXNlIGRpYWxlY3QvZmFjYWRlIGltcGxlbWVudGF0aW9uKS5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqIEByZXR1cm5zIFRoZSBuZXh0IHNlcXVlbmNlIHZhbHVlIGFzIGEgbnVtYmVyLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBuZXh0dmFsKHNlcXVlbmNlOiBzdHJpbmcsIHRhYmxlTmFtZT86IHN0cmluZywgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdC8vIE5vdGU6IFRoZSBvcmlnaW5hbCBKYXZhU2NyaXB0IG9yZGVyIG9mIGFyZ3VtZW50cyBmb3IgRGF0YWJhc2VGYWNhZGUubmV4dHZhbCBpczpcblx0XHQvLyBEYXRhYmFzZUZhY2FkZS5uZXh0dmFsKHNlcXVlbmNlLCBkYXRhc291cmNlTmFtZSwgdGFibGVOYW1lKTtcblx0XHRyZXR1cm4gRGF0YWJhc2VGYWNhZGUubmV4dHZhbChzZXF1ZW5jZSwgZGF0YXNvdXJjZU5hbWUsIHRhYmxlTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBkYXRhYmFzZSBzZXF1ZW5jZS5cblx0ICpcblx0ICogQHBhcmFtIHNlcXVlbmNlIFRoZSBuYW1lIG9mIHRoZSBzZXF1ZW5jZSB0byBjcmVhdGUuXG5cdCAqIEBwYXJhbSBzdGFydCBPcHRpb25hbDogVGhlIHN0YXJ0aW5nIHZhbHVlIGZvciB0aGUgc2VxdWVuY2UgKGRlZmF1bHRzIHRvIDEgaWYgbm90IHByb3ZpZGVkKS5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNyZWF0ZShzZXF1ZW5jZTogc3RyaW5nLCBzdGFydD86IG51bWJlciwgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHREYXRhYmFzZUZhY2FkZS5jcmVhdGVTZXF1ZW5jZShzZXF1ZW5jZSwgc3RhcnQsIGRhdGFzb3VyY2VOYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEcm9wcyAoZGVsZXRlcykgYW4gZXhpc3RpbmcgZGF0YWJhc2Ugc2VxdWVuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZXF1ZW5jZSBUaGUgbmFtZSBvZiB0aGUgc2VxdWVuY2UgdG8gZHJvcC5cblx0ICogQHBhcmFtIGRhdGFzb3VyY2VOYW1lIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiB0byB1c2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRyb3Aoc2VxdWVuY2U6IHN0cmluZywgZGF0YXNvdXJjZU5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHREYXRhYmFzZUZhY2FkZS5kcm9wU2VxdWVuY2Uoc2VxdWVuY2UsIGRhdGFzb3VyY2VOYW1lKTtcblx0fVxufVxuXG4vLyBAdHMtaWdub3JlXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0Ly8gQHRzLWlnbm9yZVxuXHRtb2R1bGUuZXhwb3J0cyA9IFNlcXVlbmNlO1xufSJdLAogICJtYXBwaW5ncyI6ICJBQU9BLE1BQU0saUJBQWlCLEtBQUssS0FBSyx3REFBd0Q7QUFLbEYsTUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVXJCLE9BQWMsUUFBUSxVQUFrQixXQUFvQixnQkFBaUM7QUFHNUYsV0FBTyxlQUFlLFFBQVEsVUFBVSxnQkFBZ0IsU0FBUztBQUFBLEVBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQWMsT0FBTyxVQUFrQixPQUFnQixnQkFBK0I7QUFDckYsbUJBQWUsZUFBZSxVQUFVLE9BQU8sY0FBYztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLEtBQUssVUFBa0IsZ0JBQStCO0FBQ25FLG1CQUFlLGFBQWEsVUFBVSxjQUFjO0FBQUEsRUFDckQ7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|