@spytecgps/nova-orm 1.0.77 → 1.0.78
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/dist/index.js +1 -1
- package/dist/repositories/deviceTypeFeature/bulkCreateDeviceTypeFeature.d.ts +5 -0
- package/dist/repositories/deviceTypeFeature/bulkCreateDeviceTypeFeature.js +20 -0
- package/dist/repositories/deviceTypeFeature/bulkCreateDeviceTypeFeature.js.map +1 -0
- package/dist/repositories/deviceTypeFeature/deleteDeviceTypeFeature.d.ts +4 -0
- package/dist/repositories/deviceTypeFeature/deleteDeviceTypeFeature.js +22 -0
- package/dist/repositories/deviceTypeFeature/deleteDeviceTypeFeature.js.map +1 -0
- package/dist/repositories/deviceTypeFeature/getDeviceTypeFeatures.d.ts +4 -0
- package/dist/repositories/deviceTypeFeature/getDeviceTypeFeatures.js +25 -0
- package/dist/repositories/deviceTypeFeature/getDeviceTypeFeatures.js.map +1 -0
- package/dist/repositories/deviceTypeFeature/index.d.ts +27 -0
- package/dist/repositories/deviceTypeFeature/index.js +48 -0
- package/dist/repositories/deviceTypeFeature/index.js.map +1 -0
- package/dist/repositories/features/createFeature.d.ts +5 -0
- package/dist/repositories/features/createFeature.js +21 -0
- package/dist/repositories/features/createFeature.js.map +1 -0
- package/dist/repositories/features/deleteFeature.d.ts +4 -0
- package/dist/repositories/features/deleteFeature.js +17 -0
- package/dist/repositories/features/deleteFeature.js.map +1 -0
- package/dist/repositories/features/getFeatures.d.ts +4 -0
- package/dist/repositories/features/getFeatures.js +25 -0
- package/dist/repositories/features/getFeatures.js.map +1 -0
- package/dist/repositories/features/index.d.ts +33 -0
- package/dist/repositories/features/index.js +61 -0
- package/dist/repositories/features/index.js.map +1 -0
- package/dist/repositories/features/upsertFeature.d.ts +4 -0
- package/dist/repositories/features/upsertFeature.js +23 -0
- package/dist/repositories/features/upsertFeature.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -1
- package/dist/repositories/index.js +3 -1
- package/dist/repositories/index.js.map +1 -1
- package/dist/types/deviceTypeFeature.d.ts +23 -0
- package/dist/types/deviceTypeFeature.js +4 -0
- package/dist/types/deviceTypeFeature.js.map +1 -0
- package/dist/types/feature.d.ts +20 -0
- package/dist/types/feature.js +3 -0
- package/dist/types/feature.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
3
|
+
import { BulkCreateDeviceTypeFeatureParams } from '../../types/deviceTypeFeature';
|
|
4
|
+
import { Logger } from '../../types/logger';
|
|
5
|
+
export declare const bulkCreateDeviceTypeFeature: (novaDataSource: NovaDataSource, params: BulkCreateDeviceTypeFeatureParams, logger: Logger) => Promise<DeviceTypeFeature[]>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
import { requiredBulkCreateDeviceTypeFeatureParamsAttributes, } from '../../types/deviceTypeFeature';
|
|
3
|
+
import { anyAttributeInArrayIsNull } from '../../utils/paramsValidators';
|
|
4
|
+
export const bulkCreateDeviceTypeFeature = async (novaDataSource, params, logger) => {
|
|
5
|
+
if (anyAttributeInArrayIsNull(params.items, requiredBulkCreateDeviceTypeFeatureParamsAttributes)) {
|
|
6
|
+
logger.warn({ params }, 'DeviceTypeFeatureRepository::bulkCreateDeviceTypeFeature missing required parameters');
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
return novaDataSource.safeQuery(async (safeDataSource) => {
|
|
10
|
+
const deviceTypeFeatureRepository = safeDataSource.getRepository(DeviceTypeFeature);
|
|
11
|
+
const newFeatures = params.items.map(item => ({
|
|
12
|
+
deviceTypeId: item.deviceTypeId,
|
|
13
|
+
featureKey: item.featureKey,
|
|
14
|
+
value: item.value,
|
|
15
|
+
}));
|
|
16
|
+
const createdFeature = await deviceTypeFeatureRepository.save(newFeatures);
|
|
17
|
+
return createdFeature ?? [];
|
|
18
|
+
}, 'DeviceTypeFeatureRepository::bulkCreateDeviceTypeFeature error');
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=bulkCreateDeviceTypeFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulkCreateDeviceTypeFeature.js","sourceRoot":"","sources":["../../../src/repositories/deviceTypeFeature/bulkCreateDeviceTypeFeature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAEL,mDAAmD,GACpD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAExE,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAC9C,cAA8B,EAC9B,MAAyC,EACzC,MAAc,EACd,EAAE;IACF,IACE,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,mDAAmD,CAAC,EAC5F;QACA,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,sFAAsF,CACvF,CAAA;QACD,OAAO,EAAE,CAAA;KACV;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,cAA8B,EAEnE,EAAE;QACF,MAAM,2BAA2B,GAAG,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAEnF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAClC,IAAI,CAAC,EAAE,CACL,CAAC;YACC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;SACI,CAAA,CAC1B,CAAA;QAED,MAAM,cAAc,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAE1E,OAAO,cAAc,IAAI,EAAE,CAAA;IAC7B,CAAC,EAAE,gEAAgE,CAAC,CAAA;AACtE,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
2
|
+
import { DeleteDeviceTypeFeatureParams } from '../../types/deviceTypeFeature';
|
|
3
|
+
import { Logger } from '../../types/logger';
|
|
4
|
+
export declare const deleteDeviceTypeFeature: (novaDataSource: NovaDataSource, params: DeleteDeviceTypeFeatureParams, logger: Logger) => Promise<boolean>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
import { oneRequiredDeleteDeviceTypeFeatureParamsAttributes, } from '../../types/deviceTypeFeature';
|
|
3
|
+
import { allAttributesAreNull } from '../../utils/paramsValidators';
|
|
4
|
+
export const deleteDeviceTypeFeature = async (novaDataSource, params, logger) => {
|
|
5
|
+
if (allAttributesAreNull(params.filters, oneRequiredDeleteDeviceTypeFeatureParamsAttributes)) {
|
|
6
|
+
logger.warn({ params }, 'DeviceTypeFeatureRepository::deleteDeviceTypeFeature missing required parameters');
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return novaDataSource.safeQuery(async (dataSource) => {
|
|
10
|
+
const featureRepository = dataSource.getRepository(DeviceTypeFeature);
|
|
11
|
+
const result = await featureRepository
|
|
12
|
+
.createQueryBuilder()
|
|
13
|
+
.delete()
|
|
14
|
+
.where('COALESCE(:deviceTypeId, deviceTypeId) = deviceTypeId AND COALESCE(:featureKey, featureKey) = featureKey', {
|
|
15
|
+
deviceTypeId: params.filters.deviceTypeId,
|
|
16
|
+
featureKey: params.filters.featureKey,
|
|
17
|
+
})
|
|
18
|
+
.execute();
|
|
19
|
+
return result.affected > 0;
|
|
20
|
+
}, 'FeatureRepository::deleteFeature');
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=deleteDeviceTypeFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteDeviceTypeFeature.js","sourceRoot":"","sources":["../../../src/repositories/deviceTypeFeature/deleteDeviceTypeFeature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAEL,kDAAkD,GACnD,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,cAA8B,EAC9B,MAAqC,EACrC,MAAc,EACI,EAAE;IACpB,IAAI,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,kDAAkD,CAAC,EAAE;QAC5F,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,kFAAkF,CACnF,CAAA;QACD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAErE,MAAM,MAAM,GAAG,MAAM,iBAAiB;aACnC,kBAAkB,EAAE;aACpB,MAAM,EAAE;aACR,KAAK,CACJ,yGAAyG,EACzG;YACE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;YACzC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;SACtC,CACF;aACA,OAAO,EAAE,CAAA;QAEZ,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
3
|
+
import { GetDeviceTypeFeaturesParams } from '../../types/deviceTypeFeature';
|
|
4
|
+
export declare const getDeviceTypeFeatures: (novaDataSource: NovaDataSource, params: GetDeviceTypeFeaturesParams) => Promise<DeviceTypeFeature[]>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
export const getDeviceTypeFeatures = async (novaDataSource, params) => {
|
|
3
|
+
// Force the query to run on master or slave
|
|
4
|
+
const dbQueryRunner = novaDataSource.createQueryRunnerFromParams(params);
|
|
5
|
+
return novaDataSource.safeQuery(async (safeDataSource, queryRunner) => {
|
|
6
|
+
const deviceTypeFeatureRepository = safeDataSource.getRepository(DeviceTypeFeature);
|
|
7
|
+
const queryBuilder = deviceTypeFeatureRepository.createQueryBuilder('deviceTypeFeature');
|
|
8
|
+
if (queryRunner) {
|
|
9
|
+
queryBuilder.setQueryRunner(queryRunner);
|
|
10
|
+
}
|
|
11
|
+
if (params?.filters?.deviceTypeIds?.length) {
|
|
12
|
+
queryBuilder.where('deviceTypeFeature.deviceTypeId IN (:deviceTypeIdList)', {
|
|
13
|
+
deviceTypeIdList: params.filters.deviceTypeIds,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (params?.filters?.featureKeys?.length) {
|
|
17
|
+
queryBuilder.andWhere('deviceTypeFeature.featureKey IN (:featureKeyList)', {
|
|
18
|
+
featureKeyList: params.filters.featureKeys,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const deviceTypeFeatures = await queryBuilder.getMany();
|
|
22
|
+
return deviceTypeFeatures?.length ? deviceTypeFeatures : [];
|
|
23
|
+
}, 'FeatureRepository::getFeatures error', dbQueryRunner);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=getDeviceTypeFeatures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeviceTypeFeatures.js","sourceRoot":"","sources":["../../../src/repositories/deviceTypeFeature/getDeviceTypeFeatures.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAIlD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,cAA8B,EAC9B,MAAmC,EACL,EAAE;IAChC,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EACH,cAA8B,EAC9B,WAAyB,EACK,EAAE;QAChC,MAAM,2BAA2B,GAAG,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAEnF,MAAM,YAAY,GAAG,2BAA2B,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;QAExF,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;YAC1C,YAAY,CAAC,KAAK,CAAC,uDAAuD,EAAE;gBAC1E,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;aAC/C,CAAC,CAAA;SACH;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;YACxC,YAAY,CAAC,QAAQ,CAAC,mDAAmD,EAAE;gBACzE,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW;aAC3C,CAAC,CAAA;SACH;QAED,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAEvD,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,CAAC,EACD,sCAAsC,EACtC,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DeviceTypeFeature } from '../../entities';
|
|
2
|
+
import { BulkCreateDeviceTypeFeatureParams, DeleteDeviceTypeFeatureParams, GetDeviceTypeFeaturesParams } from '../../types/deviceTypeFeature';
|
|
3
|
+
import { BaseRepository } from '../baseRepository';
|
|
4
|
+
/**
|
|
5
|
+
* DeviceTypeFeatureRepository, used to interact with the deviceTypeFeature entity
|
|
6
|
+
* @extends BaseRepository
|
|
7
|
+
*/
|
|
8
|
+
export declare class DeviceTypeFeatureRepository extends BaseRepository {
|
|
9
|
+
/**
|
|
10
|
+
* Create a device type feature
|
|
11
|
+
* @param {BulkCreateDeviceTypeFeatureParams} params containing information to create a device type feature
|
|
12
|
+
* @returns {DeviceTypeFeature} the created device type feature
|
|
13
|
+
* */
|
|
14
|
+
bulkCreateDeviceTypeFeature(params: BulkCreateDeviceTypeFeatureParams): Promise<DeviceTypeFeature[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Get device type features
|
|
17
|
+
* @param {GetDeviceTypeFeaturesParams} params containing information to get device type features
|
|
18
|
+
* @returns {DeviceTypeFeature[]} the device type features
|
|
19
|
+
*/
|
|
20
|
+
getDeviceTypeFeatures(params?: GetDeviceTypeFeaturesParams): Promise<DeviceTypeFeature[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Delete device type feature
|
|
23
|
+
* @param {DeleteDeviceTypeFeatureParams} params containing information to delete the device type feature
|
|
24
|
+
* @returns {boolean} if the device type feature were deleted
|
|
25
|
+
* */
|
|
26
|
+
deleteDeviceTypeFeature(params: DeleteDeviceTypeFeatureParams): Promise<boolean>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
2
|
+
import { BaseRepository } from '../baseRepository';
|
|
3
|
+
import { bulkCreateDeviceTypeFeature } from './bulkCreateDeviceTypeFeature';
|
|
4
|
+
import { deleteDeviceTypeFeature } from './deleteDeviceTypeFeature';
|
|
5
|
+
import { getDeviceTypeFeatures } from './getDeviceTypeFeatures';
|
|
6
|
+
/**
|
|
7
|
+
* DeviceTypeFeatureRepository, used to interact with the deviceTypeFeature entity
|
|
8
|
+
* @extends BaseRepository
|
|
9
|
+
*/
|
|
10
|
+
export class DeviceTypeFeatureRepository extends BaseRepository {
|
|
11
|
+
/**
|
|
12
|
+
* Create a device type feature
|
|
13
|
+
* @param {BulkCreateDeviceTypeFeatureParams} params containing information to create a device type feature
|
|
14
|
+
* @returns {DeviceTypeFeature} the created device type feature
|
|
15
|
+
* */
|
|
16
|
+
async bulkCreateDeviceTypeFeature(params) {
|
|
17
|
+
this.logger.trace(params, `DeviceTypeFeatureRepository::bulkCreateDeviceTypeFeature started with params`);
|
|
18
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
19
|
+
const result = await bulkCreateDeviceTypeFeature(novaDataSource, params, this.logger);
|
|
20
|
+
this.logger.trace(result, 'DeviceTypeFeatureRepository::bulkCreateDeviceTypeFeature result');
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get device type features
|
|
25
|
+
* @param {GetDeviceTypeFeaturesParams} params containing information to get device type features
|
|
26
|
+
* @returns {DeviceTypeFeature[]} the device type features
|
|
27
|
+
*/
|
|
28
|
+
async getDeviceTypeFeatures(params) {
|
|
29
|
+
this.logger.trace(params, `DeviceTypeFeatureRepository::getDeviceTypeFeatures started with params`);
|
|
30
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
31
|
+
const result = await getDeviceTypeFeatures(novaDataSource, params);
|
|
32
|
+
this.logger.trace(result, 'DeviceTypeFeatureRepository::getDeviceTypeFeatures result');
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Delete device type feature
|
|
37
|
+
* @param {DeleteDeviceTypeFeatureParams} params containing information to delete the device type feature
|
|
38
|
+
* @returns {boolean} if the device type feature were deleted
|
|
39
|
+
* */
|
|
40
|
+
async deleteDeviceTypeFeature(params) {
|
|
41
|
+
this.logger.trace(params, `DeviceTypeFeatureRepository::deleteDeviceTypeFeature started with params`);
|
|
42
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
43
|
+
const result = await deleteDeviceTypeFeature(novaDataSource, params, this.logger);
|
|
44
|
+
this.logger.trace({ result }, 'DeviceTypeFeatureRepository::deleteDeviceTypeFeature result');
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/deviceTypeFeature/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,cAAc;IAC7D;;;;SAIK;IACL,KAAK,CAAC,2BAA2B,CAC/B,MAAyC;QAEzC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,8EAA8E,CAC/E,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAErF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,iEAAiE,CAAC,CAAA;QAE5F,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAoC;QAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,wEAAwE,CACzE,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QAElE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,2DAA2D,CAAC,CAAA;QAEtF,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;SAIK;IACL,KAAK,CAAC,uBAAuB,CAAC,MAAqC;QACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,MAAM,EACN,0EAA0E,CAC3E,CAAA;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,6DAA6D,CAAC,CAAA;QAE5F,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
3
|
+
import { CreateFeatureParams } from '../../types/feature';
|
|
4
|
+
import { Logger } from '../../types/logger';
|
|
5
|
+
export declare const createFeature: (novaDataSource: NovaDataSource, params: CreateFeatureParams, logger: Logger) => Promise<Feature>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
import { requiredCreateFeatureParamsAttributes } from '../../types/feature';
|
|
3
|
+
import { anyAttributeIsNull } from '../../utils/paramsValidators';
|
|
4
|
+
export const createFeature = async (novaDataSource, params, logger) => {
|
|
5
|
+
if (anyAttributeIsNull(params, requiredCreateFeatureParamsAttributes)) {
|
|
6
|
+
logger.warn({ params }, 'FeatureRepository::createFeature missing required parameters');
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return novaDataSource.safeQuery(async (safeDataSource) => {
|
|
10
|
+
const featuresRepository = safeDataSource.getRepository(Feature);
|
|
11
|
+
const newFeature = {
|
|
12
|
+
key: params.key,
|
|
13
|
+
name: params.name,
|
|
14
|
+
description: params.description,
|
|
15
|
+
tags: params.tags,
|
|
16
|
+
};
|
|
17
|
+
const createdFeature = await featuresRepository.save(newFeature);
|
|
18
|
+
return createdFeature ?? null;
|
|
19
|
+
}, 'FeatureRepository::createFeature error');
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=createFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFeature.js","sourceRoot":"","sources":["../../../src/repositories/features/createFeature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,OAAO,EAAuB,qCAAqC,EAAE,MAAM,qBAAqB,CAAA;AAEhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,MAA2B,EAC3B,MAAc,EACd,EAAE;IACF,IAAI,kBAAkB,CAAsB,MAAM,EAAE,qCAAqC,CAAC,EAAE;QAC1F,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,cAA8B,EAAoB,EAAE;QACzF,MAAM,kBAAkB,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAEhE,MAAM,UAAU,GAAG;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SACP,CAAA;QAEZ,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAEhE,OAAO,cAAc,IAAI,IAAI,CAAA;IAC/B,CAAC,EAAE,wCAAwC,CAAC,CAAA;AAC9C,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
2
|
+
import { DeleteFeatureParams } from '../../types/feature';
|
|
3
|
+
import { Logger } from '../../types/logger';
|
|
4
|
+
export declare const deleteFeature: (novaDataSource: NovaDataSource, params: DeleteFeatureParams, logger: Logger) => Promise<boolean>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
export const deleteFeature = async (novaDataSource, params, logger) => {
|
|
3
|
+
if (!params?.filters?.key) {
|
|
4
|
+
logger.warn({ params }, 'FeatureRepository::deleteFeature missing required parameters');
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
return novaDataSource.safeQuery(async (dataSource) => {
|
|
8
|
+
const featureRepository = dataSource.getRepository(Feature);
|
|
9
|
+
const result = await featureRepository
|
|
10
|
+
.createQueryBuilder()
|
|
11
|
+
.delete()
|
|
12
|
+
.where('key = :key', { key: params.filters.key })
|
|
13
|
+
.execute();
|
|
14
|
+
return result.affected > 0;
|
|
15
|
+
}, 'FeatureRepository::deleteFeature');
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=deleteFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteFeature.js","sourceRoot":"","sources":["../../../src/repositories/features/deleteFeature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAKxC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,MAA2B,EAC3B,MAAc,EACI,EAAE;IACpB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,MAAM,GAAG,MAAM,iBAAiB;aACnC,kBAAkB,EAAE;aACpB,MAAM,EAAE;aACR,KAAK,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;aAChD,OAAO,EAAE,CAAA;QAEZ,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC5B,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
3
|
+
import { GetFeatureParams } from '../../types/feature';
|
|
4
|
+
export declare const getFeatures: (novaDataSource: NovaDataSource, params: GetFeatureParams) => Promise<Feature[]>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
export const getFeatures = async (novaDataSource, params) => {
|
|
3
|
+
// Force the query to run on master or slave
|
|
4
|
+
const dbQueryRunner = novaDataSource.createQueryRunnerFromParams(params);
|
|
5
|
+
return novaDataSource.safeQuery(async (safeDataSource, queryRunner) => {
|
|
6
|
+
const featureRepository = safeDataSource.getRepository(Feature);
|
|
7
|
+
const queryBuilder = featureRepository.createQueryBuilder('feature');
|
|
8
|
+
if (queryRunner) {
|
|
9
|
+
queryBuilder.setQueryRunner(queryRunner);
|
|
10
|
+
}
|
|
11
|
+
if (params?.filters?.keys?.length) {
|
|
12
|
+
queryBuilder.where('feature.key IN (:keyList)', {
|
|
13
|
+
keyList: params.filters.keys,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (params?.filters?.names?.length) {
|
|
17
|
+
queryBuilder.andWhere('feature.name IN (:nameList)', {
|
|
18
|
+
nameList: params.filters.names,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const features = await queryBuilder.getMany();
|
|
22
|
+
return features?.length ? features : [];
|
|
23
|
+
}, 'FeatureRepository::getFeatures error', dbQueryRunner);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=getFeatures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFeatures.js","sourceRoot":"","sources":["../../../src/repositories/features/getFeatures.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIxC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,cAA8B,EAC9B,MAAwB,EACJ,EAAE;IACtB,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EAAE,cAA8B,EAAE,WAAyB,EAAsB,EAAE;QACtF,MAAM,iBAAiB,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE/D,MAAM,YAAY,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAEpE,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;aAC7B,CAAC,CAAA;SACH;QAED,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,YAAY,CAAC,QAAQ,CAAC,6BAA6B,EAAE;gBACnD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;aAC/B,CAAC,CAAA;SACH;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAE7C,OAAO,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACzC,CAAC,EACD,sCAAsC,EACtC,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
import { CreateFeatureParams, DeleteFeatureParams, GetFeatureParams } from '../../types/feature';
|
|
3
|
+
import { BaseRepository } from '../baseRepository';
|
|
4
|
+
/**
|
|
5
|
+
* FeatureRepository, used to interact with the feature entity
|
|
6
|
+
* @extends BaseRepository
|
|
7
|
+
*/
|
|
8
|
+
export declare class FeatureRepository extends BaseRepository {
|
|
9
|
+
/**
|
|
10
|
+
* Create a feature
|
|
11
|
+
* @param {CreateFeatureParams} params containing information to create a feature
|
|
12
|
+
* @returns {Feature} the created feature
|
|
13
|
+
* */
|
|
14
|
+
createFeature(params: CreateFeatureParams): Promise<Feature>;
|
|
15
|
+
/**
|
|
16
|
+
* Get features
|
|
17
|
+
* @param {GetFeatureParams} params containing information to get features
|
|
18
|
+
* @returns {Feature[]} the features
|
|
19
|
+
*/
|
|
20
|
+
getFeatures(params?: GetFeatureParams): Promise<Feature[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Upsert a feature
|
|
23
|
+
* @param {CreateFeatureParams} params containing information to update a feature
|
|
24
|
+
* @returns {Feature} the updated feature
|
|
25
|
+
* */
|
|
26
|
+
upsertFeature(params: CreateFeatureParams): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Delete a feature
|
|
29
|
+
* @param {DeleteFeatureParams} params containing information to delete a feature
|
|
30
|
+
* @returns {boolean} if the feature was deleted
|
|
31
|
+
* */
|
|
32
|
+
deleteFeature(params: DeleteFeatureParams): Promise<boolean>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
2
|
+
import { BaseRepository } from '../baseRepository';
|
|
3
|
+
import { createFeature } from './createFeature';
|
|
4
|
+
import { deleteFeature } from './deleteFeature';
|
|
5
|
+
import { getFeatures } from './getFeatures';
|
|
6
|
+
import { upsertFeature } from './upsertFeature';
|
|
7
|
+
/**
|
|
8
|
+
* FeatureRepository, used to interact with the feature entity
|
|
9
|
+
* @extends BaseRepository
|
|
10
|
+
*/
|
|
11
|
+
export class FeatureRepository extends BaseRepository {
|
|
12
|
+
/**
|
|
13
|
+
* Create a feature
|
|
14
|
+
* @param {CreateFeatureParams} params containing information to create a feature
|
|
15
|
+
* @returns {Feature} the created feature
|
|
16
|
+
* */
|
|
17
|
+
async createFeature(params) {
|
|
18
|
+
this.logger.trace(params, `FeatureRepository::createFeature started with params`);
|
|
19
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
20
|
+
const result = await createFeature(novaDataSource, params, this.logger);
|
|
21
|
+
this.logger.trace(result, 'FeatureRepository::createFeature result');
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get features
|
|
26
|
+
* @param {GetFeatureParams} params containing information to get features
|
|
27
|
+
* @returns {Feature[]} the features
|
|
28
|
+
*/
|
|
29
|
+
async getFeatures(params) {
|
|
30
|
+
this.logger.trace(params, `FeatureRepository::getFeatures started with params`);
|
|
31
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
32
|
+
const result = await getFeatures(novaDataSource, params);
|
|
33
|
+
this.logger.trace(result, 'FeatureRepository::getFeatures result');
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Upsert a feature
|
|
38
|
+
* @param {CreateFeatureParams} params containing information to update a feature
|
|
39
|
+
* @returns {Feature} the updated feature
|
|
40
|
+
* */
|
|
41
|
+
async upsertFeature(params) {
|
|
42
|
+
this.logger.trace(params, `FeatureRepository::upsertFeature started with params`);
|
|
43
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
44
|
+
const result = await upsertFeature(novaDataSource, params, this.logger);
|
|
45
|
+
this.logger.trace({ result }, 'FeatureRepository::upsertFeature result');
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Delete a feature
|
|
50
|
+
* @param {DeleteFeatureParams} params containing information to delete a feature
|
|
51
|
+
* @returns {boolean} if the feature was deleted
|
|
52
|
+
* */
|
|
53
|
+
async deleteFeature(params) {
|
|
54
|
+
this.logger.trace(params, `FeatureRepository::deleteFeature started with params`);
|
|
55
|
+
const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
|
|
56
|
+
const result = await deleteFeature(novaDataSource, params, this.logger);
|
|
57
|
+
this.logger.trace({ result }, 'FeatureRepository::deleteFeature result');
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/features/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD;;;;SAIK;IACL,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,sDAAsD,CAAC,CAAA;QAEjF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,yCAAyC,CAAC,CAAA;QAEpE,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,oDAAoD,CAAC,CAAA;QAE/E,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAA;QAElE,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;SAIK;IACL,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,sDAAsD,CAAC,CAAA;QAEjF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,yCAAyC,CAAC,CAAA;QAExE,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;SAIK;IACL,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,sDAAsD,CAAC,CAAA;QAEjF,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,2BAA2B,CACjC,CAAA;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,yCAAyC,CAAC,CAAA;QAExE,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NovaDataSource } from '../../novaDataSource';
|
|
2
|
+
import { CreateFeatureParams } from '../../types/feature';
|
|
3
|
+
import { Logger } from '../../types/logger';
|
|
4
|
+
export declare const upsertFeature: (novaDataSource: NovaDataSource, params: CreateFeatureParams, logger: Logger) => Promise<boolean>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Feature } from '../../entities';
|
|
2
|
+
import { requiredCreateFeatureParamsAttributes } from '../../types/feature';
|
|
3
|
+
import { anyAttributeIsNull } from '../../utils/paramsValidators';
|
|
4
|
+
export const upsertFeature = async (novaDataSource, params, logger) => {
|
|
5
|
+
if (anyAttributeIsNull(params, requiredCreateFeatureParamsAttributes)) {
|
|
6
|
+
logger.warn({ params }, 'FeatureRepository::upsertFeature missing required parameters');
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return novaDataSource.safeQuery(async (dataSource) => {
|
|
10
|
+
const featureRepository = dataSource.getRepository(Feature);
|
|
11
|
+
const feature = {
|
|
12
|
+
key: params.key,
|
|
13
|
+
name: params.name,
|
|
14
|
+
description: params.description,
|
|
15
|
+
tags: params.tags,
|
|
16
|
+
};
|
|
17
|
+
const result = await featureRepository.upsert(feature, {
|
|
18
|
+
conflictPaths: ['key'],
|
|
19
|
+
});
|
|
20
|
+
return result?.raw?.affectedRows > 0;
|
|
21
|
+
}, 'FeatureRepository::upsertFeature');
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=upsertFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsertFeature.js","sourceRoot":"","sources":["../../../src/repositories/features/upsertFeature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,OAAO,EAAuB,qCAAqC,EAAE,MAAM,qBAAqB,CAAA;AAEhG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,MAA2B,EAC3B,MAAc,EACI,EAAE;IACpB,IAAI,kBAAkB,CAAsB,MAAM,EAAE,qCAAqC,CAAC,EAAE;QAC1F,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,8DAA8D,CAAC,CAAA;QACvF,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,UAA0B,EAAoB,EAAE;QACrF,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SACP,CAAA;QAEZ,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE;YACrD,aAAa,EAAE,CAAC,KAAK,CAAC;SACvB,CAAC,CAAA;QAEF,OAAO,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,CAAC,CAAA;IACtC,CAAC,EAAE,kCAAkC,CAAC,CAAA;AACxC,CAAC,CAAA"}
|
|
@@ -15,7 +15,9 @@ import { DeviceBehaviorsRepository } from './deviceBehaviors';
|
|
|
15
15
|
import { DevicePairingsRepository } from './devicePairings';
|
|
16
16
|
import { DevicesRepository } from './devices';
|
|
17
17
|
import { DeviceStatusRepository } from './deviceStatus';
|
|
18
|
+
import { DeviceTypeFeatureRepository } from './deviceTypeFeature';
|
|
18
19
|
import { EntityTagsRepository } from './entityTags';
|
|
20
|
+
import { FeatureRepository } from './features';
|
|
19
21
|
import { FirmwaresRepository } from './firmwares';
|
|
20
22
|
import { LatestUserAppInfoRepository } from './latestUserAppInfo';
|
|
21
23
|
import { LiveLinksRepository } from './liveLinks';
|
|
@@ -34,4 +36,4 @@ import { UserInvitationsRepository } from './userInvitations';
|
|
|
34
36
|
import { UserRatingRequestsRepository } from './userRatingRequests';
|
|
35
37
|
import { UserRegistrationAttemptsRepository } from './userRegistrationAttempts';
|
|
36
38
|
import { UsersRepository } from './users';
|
|
37
|
-
export { AcumaticaRepository, AempTokenRepository, AlertRepository, AlertTypesRepository, AppFeaturesRepository, AssetCategoriesRepository, BillingRepository, BlacklistRepository, BLEMeshConfigurationRepository, BoundariesRepository, ClientsRepository, CountriesRepository, DeactivationsRepository, DeviceStatusRepository, DeviceBehaviorsRepository, DevicePairingsRepository, DevicesRepository, EntityTagsRepository, FirmwaresRepository, LatestUserAppInfoRepository, LiveLinksRepository, NotificationRecipientsRepository, PositionRepository, SecurityRepository, TagsRepository, TasksRepository, TripRepository, UserActivationsRepository, UserAppFeedbackRepository, UserAppIncidentsRepository, UserConfigurationsRepository, UserDataDeletionRequestsRepository, UserInvitationsRepository, UserRatingRequestsRepository, UserRegistrationAttemptsRepository, UsersRepository, };
|
|
39
|
+
export { AcumaticaRepository, AempTokenRepository, AlertRepository, AlertTypesRepository, AppFeaturesRepository, AssetCategoriesRepository, BillingRepository, BlacklistRepository, BLEMeshConfigurationRepository, BoundariesRepository, ClientsRepository, CountriesRepository, DeactivationsRepository, DeviceStatusRepository, DeviceBehaviorsRepository, DevicePairingsRepository, DevicesRepository, DeviceTypeFeatureRepository, EntityTagsRepository, FeatureRepository, FirmwaresRepository, LatestUserAppInfoRepository, LiveLinksRepository, NotificationRecipientsRepository, PositionRepository, SecurityRepository, TagsRepository, TasksRepository, TripRepository, UserActivationsRepository, UserAppFeedbackRepository, UserAppIncidentsRepository, UserConfigurationsRepository, UserDataDeletionRequestsRepository, UserInvitationsRepository, UserRatingRequestsRepository, UserRegistrationAttemptsRepository, UsersRepository, };
|
|
@@ -15,7 +15,9 @@ import { DeviceBehaviorsRepository } from './deviceBehaviors';
|
|
|
15
15
|
import { DevicePairingsRepository } from './devicePairings';
|
|
16
16
|
import { DevicesRepository } from './devices';
|
|
17
17
|
import { DeviceStatusRepository } from './deviceStatus';
|
|
18
|
+
import { DeviceTypeFeatureRepository } from './deviceTypeFeature';
|
|
18
19
|
import { EntityTagsRepository } from './entityTags';
|
|
20
|
+
import { FeatureRepository } from './features';
|
|
19
21
|
import { FirmwaresRepository } from './firmwares';
|
|
20
22
|
import { LatestUserAppInfoRepository } from './latestUserAppInfo';
|
|
21
23
|
import { LiveLinksRepository } from './liveLinks';
|
|
@@ -34,5 +36,5 @@ import { UserInvitationsRepository } from './userInvitations';
|
|
|
34
36
|
import { UserRatingRequestsRepository } from './userRatingRequests';
|
|
35
37
|
import { UserRegistrationAttemptsRepository } from './userRegistrationAttempts';
|
|
36
38
|
import { UsersRepository } from './users';
|
|
37
|
-
export { AcumaticaRepository, AempTokenRepository, AlertRepository, AlertTypesRepository, AppFeaturesRepository, AssetCategoriesRepository, BillingRepository, BlacklistRepository, BLEMeshConfigurationRepository, BoundariesRepository, ClientsRepository, CountriesRepository, DeactivationsRepository, DeviceStatusRepository, DeviceBehaviorsRepository, DevicePairingsRepository, DevicesRepository, EntityTagsRepository, FirmwaresRepository, LatestUserAppInfoRepository, LiveLinksRepository, NotificationRecipientsRepository, PositionRepository, SecurityRepository, TagsRepository, TasksRepository, TripRepository, UserActivationsRepository, UserAppFeedbackRepository, UserAppIncidentsRepository, UserConfigurationsRepository, UserDataDeletionRequestsRepository, UserInvitationsRepository, UserRatingRequestsRepository, UserRegistrationAttemptsRepository, UsersRepository, };
|
|
39
|
+
export { AcumaticaRepository, AempTokenRepository, AlertRepository, AlertTypesRepository, AppFeaturesRepository, AssetCategoriesRepository, BillingRepository, BlacklistRepository, BLEMeshConfigurationRepository, BoundariesRepository, ClientsRepository, CountriesRepository, DeactivationsRepository, DeviceStatusRepository, DeviceBehaviorsRepository, DevicePairingsRepository, DevicesRepository, DeviceTypeFeatureRepository, EntityTagsRepository, FeatureRepository, FirmwaresRepository, LatestUserAppInfoRepository, LiveLinksRepository, NotificationRecipientsRepository, PositionRepository, SecurityRepository, TagsRepository, TasksRepository, TripRepository, UserActivationsRepository, UserAppFeedbackRepository, UserAppIncidentsRepository, UserConfigurationsRepository, UserDataDeletionRequestsRepository, UserInvitationsRepository, UserRatingRequestsRepository, UserRegistrationAttemptsRepository, UsersRepository, };
|
|
38
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseSelectQueryParams } from './common';
|
|
2
|
+
export declare const requiredBulkCreateDeviceTypeFeatureParamsAttributes: string[];
|
|
3
|
+
export interface BulkCreateDeviceTypeFeatureParams {
|
|
4
|
+
items: {
|
|
5
|
+
deviceTypeId: number;
|
|
6
|
+
featureKey: string;
|
|
7
|
+
value?: string | null;
|
|
8
|
+
}[];
|
|
9
|
+
}
|
|
10
|
+
export declare const oneRequiredGetDeviceTypeFeaturesParamsAttributes: string[];
|
|
11
|
+
export interface GetDeviceTypeFeaturesParams extends BaseSelectQueryParams {
|
|
12
|
+
filters: {
|
|
13
|
+
deviceTypeIds?: number[];
|
|
14
|
+
featureKeys?: string[];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare const oneRequiredDeleteDeviceTypeFeatureParamsAttributes: string[];
|
|
18
|
+
export interface DeleteDeviceTypeFeatureParams {
|
|
19
|
+
filters: {
|
|
20
|
+
deviceTypeId?: number;
|
|
21
|
+
featureKey?: string;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export const requiredBulkCreateDeviceTypeFeatureParamsAttributes = ['deviceTypeId', 'featureKey'];
|
|
2
|
+
export const oneRequiredGetDeviceTypeFeaturesParamsAttributes = ['deviceTypeId', 'featureKey'];
|
|
3
|
+
export const oneRequiredDeleteDeviceTypeFeatureParamsAttributes = ['deviceTypeId', 'featureKey'];
|
|
4
|
+
//# sourceMappingURL=deviceTypeFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceTypeFeature.js","sourceRoot":"","sources":["../../src/types/deviceTypeFeature.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mDAAmD,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;AASjG,MAAM,CAAC,MAAM,gDAAgD,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;AAQ9F,MAAM,CAAC,MAAM,kDAAkD,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseSelectQueryParams } from './common';
|
|
2
|
+
export declare const requiredCreateFeatureParamsAttributes: string[];
|
|
3
|
+
export interface CreateFeatureParams {
|
|
4
|
+
key: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description?: string | null;
|
|
7
|
+
tags?: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare const oneRequiredGetFeatureParamsAttributes: string[];
|
|
10
|
+
export interface GetFeatureParams extends BaseSelectQueryParams {
|
|
11
|
+
filters: {
|
|
12
|
+
keys?: string[];
|
|
13
|
+
names?: string[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface DeleteFeatureParams {
|
|
17
|
+
filters: {
|
|
18
|
+
key: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/types/feature.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAQpE,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA"}
|