@spytecgps/nova-orm 1.0.95 → 1.0.97

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.
@@ -1,4 +1,4 @@
1
- import { Billing, BillingCustomerBraintree, BillingSubscriptionBraintree } from '../../entities';
1
+ import { Billing, BillingCustomerBraintree, BillingStatusHistoryBraintree, BillingSubscriptionBraintree, } from '../../entities';
2
2
  export const getChurnStatusByClientId = async (novaDataSource, params, logger) => {
3
3
  if (!params?.filters?.clientId) {
4
4
  logger.warn({ params }, 'BillingRepository::getChurnStatusByClientId - missing required parameters');
@@ -15,13 +15,16 @@ export const getChurnStatusByClientId = async (novaDataSource, params, logger) =
15
15
  })
16
16
  .innerJoinAndSelect(BillingSubscriptionBraintree, 'billingSubscriptionBraintree', 'billingSubscriptionBraintree.subscriptionId = billing.subscriptionId')
17
17
  .innerJoinAndSelect(BillingCustomerBraintree, 'billingCustomerBraintree', 'billingCustomerBraintree.id = billingSubscriptionBraintree.customerId')
18
- .groupBy('billingCustomerBraintree.id, billingSubscriptionBraintree.status, billingSubscriptionBraintree.subscriptionId')
18
+ .innerJoinAndSelect(BillingStatusHistoryBraintree, 'billingStatusHistoryBraintree', 'billingStatusHistoryBraintree.subscriptionId = billingSubscriptionBraintree.subscriptionId')
19
+ .groupBy('billingCustomerBraintree.id, billingSubscriptionBraintree.status, billingSubscriptionBraintree.subscriptionId, billing.subscriptionPeriodMonths, billingCustomerBraintree.churnStatus, billingSubscriptionBraintree.nextBillingDate')
19
20
  .select([
20
21
  'billingCustomerBraintree.id as braintreeCustomerId',
21
22
  'billingSubscriptionBraintree.status as braintreeSubscriptionStatus',
22
23
  'billingSubscriptionBraintree.subscriptionId as subscriptionId',
23
24
  'billingCustomerBraintree.churnStatus as churnStatus',
24
25
  'billingSubscriptionBraintree.nextBillingDate as nextBillingDate',
26
+ 'MAX(billingStatusHistoryBraintree.timestamp) as lastStatusUpdate',
27
+ 'billing.subscriptionPeriodMonths as subscriptionPeriodMonths',
25
28
  ])
26
29
  .distinct();
27
30
  if (queryRunner) {
@@ -1 +1 @@
1
- {"version":3,"file":"getChurnStatusByClientId.js","sourceRoot":"","sources":["../../../src/repositories/billing/getChurnStatusByClientId.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAKhG,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,cAA8B,EAC9B,MAAsC,EACtC,MAAc,EAC6B,EAAE;IAC7C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,2EAA2E,CAC5E,CAAA;QACD,OAAO,EAAE,CAAA;KACV;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EACH,UAA0B,EAC1B,WAAyB,EACkB,EAAE;QAC7C,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,YAAY,GAAG,iBAAiB;aACnC,kBAAkB,CAAC,SAAS,CAAC;aAC7B,KAAK,CAAC,8BAA8B,EAAE;YACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;SAClC,CAAC;aACD,kBAAkB,CACjB,4BAA4B,EAC5B,8BAA8B,EAC9B,sEAAsE,CACvE;aACA,kBAAkB,CACjB,wBAAwB,EACxB,0BAA0B,EAC1B,uEAAuE,CACxE;aACA,OAAO,CACN,+GAA+G,CAChH;aACA,MAAM,CAAC;YACN,oDAAoD;YACpD,oEAAoE;YACpE,+DAA+D;YAC/D,qDAAqD;YACrD,iEAAiE;SAClE,CAAC;aACD,QAAQ,EAAE,CAAA;QAEb,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;QAE9C,OAAO,MAAM,CAAA;IACf,CAAC,EACD,6CAA6C,EAC7C,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"getChurnStatusByClientId.js","sourceRoot":"","sources":["../../../src/repositories/billing/getChurnStatusByClientId.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAA;AAKvB,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,cAA8B,EAC9B,MAAsC,EACtC,MAAc,EAC6B,EAAE;IAC7C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,2EAA2E,CAC5E,CAAA;QACD,OAAO,EAAE,CAAA;KACV;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EACH,UAA0B,EAC1B,WAAyB,EACkB,EAAE;QAC7C,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3D,MAAM,YAAY,GAAG,iBAAiB;aACnC,kBAAkB,CAAC,SAAS,CAAC;aAC7B,KAAK,CAAC,8BAA8B,EAAE;YACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;SAClC,CAAC;aACD,kBAAkB,CACjB,4BAA4B,EAC5B,8BAA8B,EAC9B,sEAAsE,CACvE;aACA,kBAAkB,CACjB,wBAAwB,EACxB,0BAA0B,EAC1B,uEAAuE,CACxE;aACA,kBAAkB,CACjB,6BAA6B,EAC7B,+BAA+B,EAC/B,4FAA4F,CAC7F;aACA,OAAO,CACN,qOAAqO,CACtO;aACA,MAAM,CAAC;YACN,oDAAoD;YACpD,oEAAoE;YACpE,+DAA+D;YAC/D,qDAAqD;YACrD,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;SAC/D,CAAC;aACD,QAAQ,EAAE,CAAA;QAEb,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;QAE9C,OAAO,MAAM,CAAA;IACf,CAAC,EACD,6CAA6C,EAC7C,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Device } from '../../entities';
1
+ import { Device, EntityTag } from '../../entities';
2
2
  export const getDevicesCountByStatus = async (novaDataSource, params, logger) => {
3
3
  if (!params?.filters?.clientId) {
4
4
  logger.warn({ params }, 'DevicesRepository::getDevicesCountByStatus missing required parameters');
@@ -12,7 +12,15 @@ export const getDevicesCountByStatus = async (novaDataSource, params, logger) =>
12
12
  .createQueryBuilder('device')
13
13
  .where('device.clientId = :clientId', {
14
14
  clientId: params.filters.clientId,
15
- })
15
+ });
16
+ if (params.filters.tagIdList?.length) {
17
+ queryBuilder.innerJoin(EntityTag, 'entityTag', `entityTag.entityId = device.id
18
+ AND entityTag.entityType = 'Device'
19
+ AND entityTag.tagId IN (:...tagIdList)`, {
20
+ tagIdList: params.filters.tagIdList,
21
+ });
22
+ }
23
+ queryBuilder
16
24
  .groupBy('device.status')
17
25
  .select('device.status', 'status')
18
26
  .addSelect('COUNT(device.status)', 'count');
@@ -1 +1 @@
1
- {"version":3,"file":"getDevicesCountByStatus.js","sourceRoot":"","sources":["../../../src/repositories/devices/getDevicesCountByStatus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAKvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,cAA8B,EAC9B,MAAqC,EACrC,MAAc,EACmB,EAAE;IACnC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,wEAAwE,CACzE,CAAA;QACD,OAAO,EAAE,CAAA;KACV;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EACH,UAA0B,EAC1B,WAAyB,EACQ,EAAE;QACnC,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE1D,MAAM,YAAY,GAAG,iBAAiB;aACnC,kBAAkB,CAAC,QAAQ,CAAC;aAC5B,KAAK,CAAC,6BAA6B,EAAE;YACpC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;SAClC,CAAC;aACD,OAAO,CAAC,eAAe,CAAC;aACxB,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC;aACjC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;QAE7C,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,MAAM,oBAAoB,GAAG,MAAM,YAAY,CAAC,UAAU,EAAwB,CAAA;QAElF,OAAO,oBAAoB,CAAA;IAC7B,CAAC,EACD,4CAA4C,EAC5C,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"getDevicesCountByStatus.js","sourceRoot":"","sources":["../../../src/repositories/devices/getDevicesCountByStatus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKlD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,cAA8B,EAC9B,MAAqC,EACrC,MAAc,EACmB,EAAE;IACnC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;QAC9B,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,EACV,wEAAwE,CACzE,CAAA;QACD,OAAO,EAAE,CAAA;KACV;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EACH,UAA0B,EAC1B,WAAyB,EACQ,EAAE;QACnC,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE1D,MAAM,YAAY,GAAG,iBAAiB;aACnC,kBAAkB,CAAC,QAAQ,CAAC;aAC5B,KAAK,CAAC,6BAA6B,EAAE;YACpC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ;SAClC,CAAC,CAAA;QAEJ,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE;YACpC,YAAY,CAAC,SAAS,CACpB,SAAS,EACT,WAAW,EACX;;kDAEwC,EACxC;gBACE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;aACpC,CACF,CAAA;SACF;QACD,YAAY;aACT,OAAO,CAAC,eAAe,CAAC;aACxB,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC;aACjC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;QAE7C,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,MAAM,oBAAoB,GAAG,MAAM,YAAY,CAAC,UAAU,EAAwB,CAAA;QAElF,OAAO,oBAAoB,CAAA;IAC7B,CAAC,EACD,4CAA4C,EAC5C,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
@@ -118,6 +118,8 @@ export interface BillingSubscriptionChurnStatus {
118
118
  subscriptionId: string;
119
119
  churnStatus?: string | null;
120
120
  nextBillingDate?: Date | null;
121
+ lastStatusUpdate?: string | null;
122
+ subscriptionPeriodMonths?: number | null;
121
123
  }
122
124
  export interface UpsertBillingSubscriptionBraintreeParams {
123
125
  subscriptionId: string;
@@ -351,6 +351,7 @@ export interface UpdateDeviceTypeParams {
351
351
  export interface GetDevicesCountByStatusParams extends BaseSelectQueryParams {
352
352
  filters: {
353
353
  clientId: number;
354
+ tagIdList?: number[];
354
355
  };
355
356
  }
356
357
  export interface DevicesCountByStatus {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spytecgps/nova-orm",
3
- "version": "1.0.95",
3
+ "version": "1.0.97",
4
4
  "description": "ORM with PlanetScale",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",