mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-14 20:39:03 +00:00
parent
9018fc143e
commit
b926118e84
@ -9811,7 +9811,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/contact-resources.tgz_476f694f64637160ae71e12ff57815b9:
|
||||
resolution: {integrity: sha512-I563510HapGECL9TC1qo8OQsLhKaMl/ttdIWN6vL+XOPcJY+YnmLrMmo0UNMcbCo8liNfvrNmjgbnjpSdl2ikg==, tarball: file:projects/contact-resources.tgz}
|
||||
resolution: {integrity: sha512-5aEH1fHFn/BbM8mJcS2gPNW9koEkNtX8P3uC+iEID5xQPUuJV5rsfba17/Iq2bYj5DeLkyvNO5wAwoECwVCvRA==, tarball: file:projects/contact-resources.tgz}
|
||||
id: file:projects/contact-resources.tgz
|
||||
name: '@rush-temp/contact-resources'
|
||||
version: 0.0.0
|
||||
@ -10140,7 +10140,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/lead-resources.tgz_476f694f64637160ae71e12ff57815b9:
|
||||
resolution: {integrity: sha512-JO4mPZzFqoE1LYtroNwlQAUPqc2nbyarfsVlsnAC0uX87jvl7HA78tCDVzuh8LHZfexY0ilrcu1Y0ItOymdT9g==, tarball: file:projects/lead-resources.tgz}
|
||||
resolution: {integrity: sha512-o80Jqqi39oV9wTk/nhjlU53bHy92gsqqCQo1nWTsPLlMB+R1nYY5/Yw/GFxsuVHSzbzjmahUnkHIOxltJMSTig==, tarball: file:projects/lead-resources.tgz}
|
||||
id: file:projects/lead-resources.tgz
|
||||
name: '@rush-temp/lead-resources'
|
||||
version: 0.0.0
|
||||
@ -10407,7 +10407,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/model-lead.tgz_typescript@4.4.3:
|
||||
resolution: {integrity: sha512-uj6uS5KfwNIUxmSBOMO5fZT/OlT3JgXlo4OGEmg0LSGHRXUBI5nAkbLevY81kVQbtN3mKB7MPz1nLm09cxuhSw==, tarball: file:projects/model-lead.tgz}
|
||||
resolution: {integrity: sha512-qEMZ6aUEiEZgFvIMcqR8lTVkKKiUNM4eAa5OeLjnDmY1TkFF60EJpnE0e2D1SzO8zPdS+cDH+jT9FqRvXtkO9A==, tarball: file:projects/model-lead.tgz}
|
||||
id: file:projects/model-lead.tgz
|
||||
name: '@rush-temp/model-lead'
|
||||
version: 0.0.0
|
||||
@ -10846,7 +10846,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/prod.tgz_sass@1.42.1+typescript@4.4.3:
|
||||
resolution: {integrity: sha512-BsM4OYUp0S0TI6LsvclxVQ0kG6U9Oj4gbGbD38jUPIy02pVP82bS2WrAWh7/s3H4j+sbUnmmrVRulaDAcw34rw==, tarball: file:projects/prod.tgz}
|
||||
resolution: {integrity: sha512-EiXyXpntXiKwZYik5KcFitoFzvuRz3SaDN5fdwaB+IYXKXEk7Y+9Q/z8CWX4xpLZDBMDMQyTuj/fJRO2qxC52w==, tarball: file:projects/prod.tgz}
|
||||
id: file:projects/prod.tgz
|
||||
name: '@rush-temp/prod'
|
||||
version: 0.0.0
|
||||
@ -10920,7 +10920,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/recruit-resources.tgz_476f694f64637160ae71e12ff57815b9:
|
||||
resolution: {integrity: sha512-jJZMXXqVj+ovkyBhJrgToGioIbSmbf7otw3GrGcO/SuZ87j21EZHEY5vKaFAhuXDOriTz7UeajmGmUsx2H7okA==, tarball: file:projects/recruit-resources.tgz}
|
||||
resolution: {integrity: sha512-V7iAy6fX/2McQ0gZjvzHL4qA4ETElxXHEBh6ZnXBuYE8ht0sqLIXSGdgJstxyR++MWTe5ZM7l4GS/re3zYGdnw==, tarball: file:projects/recruit-resources.tgz}
|
||||
id: file:projects/recruit-resources.tgz
|
||||
name: '@rush-temp/recruit-resources'
|
||||
version: 0.0.0
|
||||
@ -11241,7 +11241,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/task-resources.tgz_e1367da94684b005adf08f025c517b1a:
|
||||
resolution: {integrity: sha512-zueI7N0xsHL7n4RRTJzNqXaDvrdC/BgotXDMVEFz4TKTvJuwGZ/39TfLaLQM0b/AWvDJV3iG3WS0z9ZMbtHc2g==, tarball: file:projects/task-resources.tgz}
|
||||
resolution: {integrity: sha512-8q7drsS3cuBhtj4PIl+/QIH8QDt0fZWk89fH3FxY/3Oog8Xd5dGkBH4YdPHUSyk9k5u9iS/P8OwvR9CKMBmxRg==, tarball: file:projects/task-resources.tgz}
|
||||
id: file:projects/task-resources.tgz
|
||||
name: '@rush-temp/task-resources'
|
||||
version: 0.0.0
|
||||
@ -11427,7 +11427,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
file:projects/tool.tgz:
|
||||
resolution: {integrity: sha512-klTUXsaa1dlq4wR1u+u3vJ8Vh8Z+StBadUgTZ1r0aqYjVXx9npJFqF+PHucl2LbZ0gDeHqC7crbxfGuui9na1Q==, tarball: file:projects/tool.tgz}
|
||||
resolution: {integrity: sha512-yYYJSLJDN7MZB9u4wzXJuUQfQdx3K5eJ1xtcuniq/NO7c2Am0tmCP5F64l7LyGc+kUQpOoj3vBl58H1tjtgJfw==, tarball: file:projects/tool.tgz}
|
||||
name: '@rush-temp/tool'
|
||||
version: 0.0.0
|
||||
dependencies:
|
||||
@ -11439,6 +11439,7 @@ packages:
|
||||
'@typescript-eslint/eslint-plugin': 5.4.0_87dbf04088b125598d0271706532eaf3
|
||||
'@typescript-eslint/parser': 5.4.0_eslint@7.32.0+typescript@4.4.3
|
||||
commander: 8.2.0
|
||||
cross-env: 7.0.3
|
||||
esbuild: 0.12.29
|
||||
eslint: 7.32.0
|
||||
eslint-config-standard-with-typescript: 21.0.1_05a8ea1454e6ca4c9f98b94b8f3abf9c
|
||||
|
@ -12,11 +12,12 @@
|
||||
"bundle": "esbuild src/index.ts --bundle --minify --platform=node > bundle.js",
|
||||
"docker:build": "docker build -t anticrm/tool .",
|
||||
"docker:push": "docker push anticrm/tool",
|
||||
"run-local": "MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin MONGO_URL=mongodb://localhost:27017 TRANSACTOR_URL=ws:/localhost:3333 MINIO_ENDPOINT=localhost TELEGRAM_DATABASE=telegram-service ts-node ./src/index.ts",
|
||||
"run-local": "cross-env MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin MONGO_URL=mongodb://localhost:27017 TRANSACTOR_URL=ws:/localhost:3333 MINIO_ENDPOINT=localhost TELEGRAM_DATABASE=telegram-service ts-node ./src/index.ts",
|
||||
"lint": "eslint src",
|
||||
"format": "prettier --write src && eslint --fix src"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cross-env": "^7.0.3",
|
||||
"@anticrm/platform-rig": "~0.6.0",
|
||||
"@types/heft-jest": "^1.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^5.4.0",
|
||||
|
@ -114,10 +114,10 @@ export abstract class MemDb extends TxProcessor {
|
||||
result = findProperty(result, key, value)
|
||||
}
|
||||
|
||||
if (options?.sort !== undefined) resultSort(result, options?.sort)
|
||||
|
||||
if (options?.lookup !== undefined) result = this.lookup(result as T[], options.lookup)
|
||||
|
||||
if (options?.sort !== undefined) resultSort(result, options?.sort)
|
||||
|
||||
result = result.slice(0, options?.limit)
|
||||
return clone(result) as T[]
|
||||
}
|
||||
|
@ -75,7 +75,15 @@ function arrayOrValue (vv: any): any[] {
|
||||
export function resultSort<T extends Doc> (result: T[], sortOptions: SortingQuery<T>): void {
|
||||
const sortFunc = (a: any, b: any): number => {
|
||||
for (const key in sortOptions) {
|
||||
const result = typeof a[key] === 'string' ? a[key].localeCompare(b[key]) : a[key] - b[key]
|
||||
let aValue = getNestedValue(key, a)
|
||||
if (typeof aValue === 'object') {
|
||||
aValue = JSON.stringify(aValue)
|
||||
}
|
||||
let bValue = getNestedValue(key, b)
|
||||
if (typeof bValue === 'object') {
|
||||
bValue = JSON.stringify(bValue)
|
||||
}
|
||||
const result = typeof aValue === 'string' ? aValue.localeCompare(bValue) : aValue - bValue
|
||||
if (result !== 0) return result * (sortOptions[key] as number)
|
||||
}
|
||||
return 0
|
||||
|
@ -41,7 +41,7 @@ function Delete (object: Doc): void {
|
||||
label: 'Delete object',
|
||||
message: 'Do you want to delete this object?'
|
||||
}, undefined, (result) => {
|
||||
if (result !== undefined) {
|
||||
if (result) {
|
||||
deleteObject(getClient(), object)
|
||||
}
|
||||
})
|
||||
|
@ -92,6 +92,23 @@ abstract class MongoAdapterBase extends TxProcessor {
|
||||
pipeline.push({ $lookup: step })
|
||||
}
|
||||
}
|
||||
if (options.sort !== undefined) {
|
||||
const sort = {} as any
|
||||
for (const _key in options.sort) {
|
||||
let key = _key as string
|
||||
if (_key.startsWith('$lookup.')) {
|
||||
key = key.replace('$lookup.', '')
|
||||
const keys = key.split('.')
|
||||
keys[0] = keys[0] + '_lookup'
|
||||
key = keys.join('.')
|
||||
}
|
||||
sort[key] = options.sort[_key] === SortingOrder.Ascending ? 1 : -1
|
||||
}
|
||||
pipeline.push({ $sort: sort })
|
||||
}
|
||||
if (options.limit !== undefined) {
|
||||
pipeline.push({ $limit: options.limit })
|
||||
}
|
||||
const domain = this.hierarchy.getDomain(clazz)
|
||||
const cursor = this.db.collection(domain).aggregate(pipeline)
|
||||
const result = (await cursor.toArray()) as FindResult<T>
|
||||
@ -125,9 +142,7 @@ abstract class MongoAdapterBase extends TxProcessor {
|
||||
}
|
||||
const domain = this.hierarchy.getDomain(_class)
|
||||
let cursor = this.db.collection(domain).find<T>(this.translateQuery(_class, query))
|
||||
if (options?.limit !== undefined) {
|
||||
cursor = cursor.limit(options.limit)
|
||||
}
|
||||
|
||||
if (options !== null && options !== undefined) {
|
||||
if (options.sort !== undefined) {
|
||||
const sort: Sort = {}
|
||||
@ -137,6 +152,9 @@ abstract class MongoAdapterBase extends TxProcessor {
|
||||
}
|
||||
cursor = cursor.sort(sort)
|
||||
}
|
||||
if (options.limit !== undefined) {
|
||||
cursor = cursor.limit(options.limit)
|
||||
}
|
||||
}
|
||||
return await cursor.toArray()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user