Skip to content

Commit

Permalink
SIMSBIOHUB-668b Using static functions for duplicate code
Browse files Browse the repository at this point in the history
  • Loading branch information
Oscar Inostroza committed Feb 21, 2025
1 parent f788aeb commit ce6c22e
Showing 1 changed file with 40 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// NOSONAR
import { Knex } from 'knex';
import SQL from 'sql-template-strings';
import { z } from 'zod';
Expand Down Expand Up @@ -91,7 +90,6 @@ export class TelemetryVendorRepository extends BaseRepository {
* @param {number} surveyId
* @returns {Knex.QueryBuilder}
*/
// NOSONAR
getLotekTelemetryByCredentialClause(queryBuilder: Knex.QueryBuilder, surveyId: number): Knex.QueryBuilder {
return queryBuilder

Check warning on line 94 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L94

Added line #L94 was not covered by tests
.join(
Expand Down Expand Up @@ -126,6 +124,40 @@ export class TelemetryVendorRepository extends BaseRepository {
return queryBuilder.andWhere('telemetry_lotek.telemetry_lotek_id', telemetryId);
}

/**
* Filter results by vendor credentials
*
* @private
* @static
* @param {Knex.QueryBuilder} queryBuilder
* @returns {Knex.QueryBuilder}
*/
private static getLotekOrVectronicTelemetryByCredentialsClause(queryBuilder: Knex.QueryBuilder): Knex.QueryBuilder {
return queryBuilder.join(

Check warning on line 136 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L136

Added line #L136 was not covered by tests
'survey_telemetry_vendor_credential',
'survey.survey_id',
'survey_telemetry_vendor_credential.survey_id'
);
}

/**
* Filter results by the projects/surveys user have access to
*
* @private
* @static
* @param {Knex.QueryBuilder} queryBuilder
* @param {(number | null)} systemUserId
* @returns {Knex.QueryBuilder}
*/
private static getTelemetryByProjectsSurveysUserAccessClause(
queryBuilder: Knex.QueryBuilder,
systemUserId: number | null
): Knex.QueryBuilder {
return queryBuilder

Check warning on line 156 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L156

Added line #L156 was not covered by tests
.join('project_participation', 'survey.project_id', 'project_participation.project_id')
.where('project_participation.system_user_id', systemUserId);
}

/**
* Find `Lotek` telemetry data records the user has access to, based on filters and pagination options.
*
Expand All @@ -138,7 +170,6 @@ export class TelemetryVendorRepository extends BaseRepository {
* @return {*} {Knex.QueryBuilder}
* @memberof TelemetryVendorRepository
*/
// NOSONAR
findLotekTelemetryClause(
queryBuilder: Knex.QueryBuilder,
isUserAdmin: boolean,
Expand All @@ -151,15 +182,9 @@ export class TelemetryVendorRepository extends BaseRepository {

if (!isUserAdmin) {
// If the user is not an admin, filter results by vendor credentials
queryBuilder.join(
'survey_telemetry_vendor_credential',
'survey.survey_id',
'survey_telemetry_vendor_credential.survey_id'
);
TelemetryVendorRepository.getLotekOrVectronicTelemetryByCredentialsClause(queryBuilder);

Check warning on line 185 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L185

Added line #L185 was not covered by tests
// If the user is not an admin, filter results by the projects/surveys they have access to
queryBuilder
.join('project_participation', 'survey.project_id', 'project_participation.project_id')
.where('project_participation.system_user_id', systemUserId);
TelemetryVendorRepository.getTelemetryByProjectsSurveysUserAccessClause(queryBuilder, systemUserId);

Check warning on line 187 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L187

Added line #L187 was not covered by tests
}

if (filterFields.keyword) {
Expand Down Expand Up @@ -260,7 +285,6 @@ export class TelemetryVendorRepository extends BaseRepository {
* @param {number} surveyId
* @returns {Knex.QueryBuilder}
*/
// NOSONAR
getVectronicTelemetryByCredentialClause(queryBuilder: Knex.QueryBuilder, surveyId: number): Knex.QueryBuilder {
return queryBuilder

Check warning on line 289 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L289

Added line #L289 was not covered by tests
.join(
Expand Down Expand Up @@ -310,7 +334,6 @@ export class TelemetryVendorRepository extends BaseRepository {
* @return {*} {Knex.QueryBuilder}
* @memberof TelemetryVendorRepository
*/
// NOSONAR
findVectronicTelemetryClause(
queryBuilder: Knex.QueryBuilder,
isUserAdmin: boolean,
Expand All @@ -323,15 +346,9 @@ export class TelemetryVendorRepository extends BaseRepository {

if (!isUserAdmin) {
// If the user is not an admin, filter results by vendor credentials
queryBuilder.join(
'survey_telemetry_vendor_credential',
'survey.survey_id',
'survey_telemetry_vendor_credential.survey_id'
);
TelemetryVendorRepository.getLotekOrVectronicTelemetryByCredentialsClause(queryBuilder);

Check warning on line 349 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L349

Added line #L349 was not covered by tests
// If the user is not an admin, filter results by the projects/surveys they have access to
queryBuilder
.join('project_participation', 'survey.project_id', 'project_participation.project_id')
.where('project_participation.system_user_id', systemUserId);
TelemetryVendorRepository.getTelemetryByProjectsSurveysUserAccessClause(queryBuilder, systemUserId);

Check warning on line 351 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L351

Added line #L351 was not covered by tests
}

if (filterFields.keyword) {
Expand Down Expand Up @@ -473,9 +490,7 @@ export class TelemetryVendorRepository extends BaseRepository {

if (!isUserAdmin) {
// If the user is not an admin, filter results by the projects/surveys they have access to
queryBuilder
.join('project_participation', 'survey.project_id', 'project_participation.project_id')
.where('project_participation.system_user_id', systemUserId);
TelemetryVendorRepository.getTelemetryByProjectsSurveysUserAccessClause(queryBuilder, systemUserId);

Check warning on line 493 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L493

Added line #L493 was not covered by tests
}

if (filterFields.keyword) {
Expand Down Expand Up @@ -618,9 +633,7 @@ export class TelemetryVendorRepository extends BaseRepository {

if (!isUserAdmin) {
// If the user is not an admin, filter results by the projects/surveys they have access to
queryBuilder
.join('project_participation', 'survey.project_id', 'project_participation.project_id')
.where('project_participation.system_user_id', systemUserId);
TelemetryVendorRepository.getTelemetryByProjectsSurveysUserAccessClause(queryBuilder, systemUserId);

Check warning on line 636 in api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts

View check run for this annotation

Codecov / codecov/patch

api/src/repositories/telemetry-repositories/telemetry-vendor-repository.ts#L636

Added line #L636 was not covered by tests
}

if (filterFields.keyword) {
Expand Down

0 comments on commit ce6c22e

Please sign in to comment.