Skip to content

Commit

Permalink
feat: improve mongo indexes
Browse files Browse the repository at this point in the history
Signed-off-by: Matthieu <matthieu.perrin@montreal.ca>
  • Loading branch information
mtlmatt committed Jul 10, 2024
1 parent 62c5abc commit be2949e
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 35 deletions.
3 changes: 1 addition & 2 deletions le-taxi-api-node.js/Jenkinsfile-operatorAndMotor
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,7 @@ ctx = pipeline.createContext([
overrides:[
"prod": [
rateLimiting: [
perMinute: 1800,
perSecond: 30
perSecond: 60
],
],
],
Expand Down
70 changes: 37 additions & 33 deletions le-taxi-api-node.js/scripts/databaseMigration/migrations.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,44 @@
// Licensed under the AGPL-3.0 license.
// See LICENSE file in the project root for full license information.
import { mdb_1_0_0_test_script } from '../../src/databaseMigrations/mongodb/afterSemver/mdb_1_0_0_test_script';
import { mdb_1_0_1_test_script } from '../../src/databaseMigrations/mongodb/afterSemver/mdb_1_0_1_test_script';
import { pg_1_0_0_test_script } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_0_test_script';
import { pg_1_0_10_operator_public_id } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_10_operator_public_id';
import { pg_1_0_11_remove_hailing } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_11_remove_hailing';
import { pg_1_0_1_test_script } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_1_test_script';
import { pg_1_0_2_create_anonymization_table } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_2_create_anonymization_table';
import { pg_1_0_3_create_trips_tables } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_3_create_trips_tables';
import { pg_1_0_4_add_user_columns_for_gtfs } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_4_add_user_columns_for_gtfs';
import { pg_1_0_5_drop_user_phone_number_customer } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_5_drop_user_phone_number_customer';
import { pg_1_0_6_apikey_changes } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_6_apikey_changes';
import { pg_1_0_7_set_admin_password } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_7_set_admin_password';
import { pg_1_0_8_add_inquiries_columns_for_gtfs } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_8_add_inquiries_columns_for_gtfs';
import { pg_1_0_9_remove_hail_endpoint_staging_testing } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_0_9_remove_hail_endpoint_staging_testing';
import { pg_1_1_0_remove_hailing_operator } from '../../src/databaseMigrations/postgres/afterSemver/pg_1_1_0_remove_hailing_operator';
import { DatabaseMigration } from './databaseMigration.types';
import { mdb_1_0_0_test_script } from "../../src/databaseMigrations/mongodb/afterSemver/mdb_1_0_0_test_script";
import { mdb_1_0_1_test_script } from "../../src/databaseMigrations/mongodb/afterSemver/mdb_1_0_1_test_script";
import { mdb_1_1_0_update_mongo_indexes } from "../../src/databaseMigrations/mongodb/afterSemver/mdb_1_1_0_update_mongo_indexes";
import { pg_1_0_0_test_script } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_0_test_script";
import { pg_1_0_10_operator_public_id } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_10_operator_public_id";
import { pg_1_0_11_remove_hailing } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_11_remove_hailing";
import { pg_1_0_1_test_script } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_1_test_script";
import { pg_1_0_2_create_anonymization_table } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_2_create_anonymization_table";
import { pg_1_0_3_create_trips_tables } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_3_create_trips_tables";
import { pg_1_0_4_add_user_columns_for_gtfs } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_4_add_user_columns_for_gtfs";
import { pg_1_0_5_drop_user_phone_number_customer } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_5_drop_user_phone_number_customer";
import { pg_1_0_6_apikey_changes } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_6_apikey_changes";
import { pg_1_0_7_set_admin_password } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_7_set_admin_password";
import { pg_1_0_8_add_inquiries_columns_for_gtfs } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_8_add_inquiries_columns_for_gtfs";
import { pg_1_0_9_remove_hail_endpoint_staging_testing } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_0_9_remove_hail_endpoint_staging_testing";
import { pg_1_1_0_remove_hailing_operator } from "../../src/databaseMigrations/postgres/afterSemver/pg_1_1_0_remove_hailing_operator";
import { DatabaseMigration } from "./databaseMigration.types";

export const migrationsByDatabaseTypeAndVersion: { [key: string]: { [key: string]: DatabaseMigration } } = {
export const migrationsByDatabaseTypeAndVersion: {
[key: string]: { [key: string]: DatabaseMigration };
} = {
mongodb: {
'1.0.1': mdb_1_0_1_test_script,
'1.0.0': mdb_1_0_0_test_script
"1.1.0": mdb_1_1_0_update_mongo_indexes,
"1.0.1": mdb_1_0_1_test_script,
"1.0.0": mdb_1_0_0_test_script,
},
postgresql: {
'1.1.0': pg_1_1_0_remove_hailing_operator,
'1.0.11': pg_1_0_11_remove_hailing,
'1.0.10': pg_1_0_10_operator_public_id,
'1.0.9': pg_1_0_9_remove_hail_endpoint_staging_testing,
'1.0.8': pg_1_0_8_add_inquiries_columns_for_gtfs,
'1.0.7': pg_1_0_7_set_admin_password,
'1.0.6': pg_1_0_6_apikey_changes,
'1.0.5': pg_1_0_5_drop_user_phone_number_customer,
'1.0.4': pg_1_0_4_add_user_columns_for_gtfs,
'1.0.3': pg_1_0_3_create_trips_tables,
'1.0.2': pg_1_0_2_create_anonymization_table,
'1.0.1': pg_1_0_1_test_script,
'1.0.0': pg_1_0_0_test_script
}
"1.1.0": pg_1_1_0_remove_hailing_operator,
"1.0.11": pg_1_0_11_remove_hailing,
"1.0.10": pg_1_0_10_operator_public_id,
"1.0.9": pg_1_0_9_remove_hail_endpoint_staging_testing,
"1.0.8": pg_1_0_8_add_inquiries_columns_for_gtfs,
"1.0.7": pg_1_0_7_set_admin_password,
"1.0.6": pg_1_0_6_apikey_changes,
"1.0.5": pg_1_0_5_drop_user_phone_number_customer,
"1.0.4": pg_1_0_4_add_user_columns_for_gtfs,
"1.0.3": pg_1_0_3_create_trips_tables,
"1.0.2": pg_1_0_2_create_anonymization_table,
"1.0.1": pg_1_0_1_test_script,
"1.0.0": pg_1_0_0_test_script,
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Licensed under the AGPL-3.0 license.
// See LICENSE file in the project root for full license information.
import { connectToMongoDb } from "../../../features/shared/taxiMongo/taxiMongo";

export async function mdb_1_1_0_update_mongo_indexes(): Promise<void> {
const db = await connectToMongoDb();

// Drop all previous indexes
await db.collection("latestTaxiPositions").dropIndexes();

// Create expiration index with TTL
await db
.collection("latestTaxiPositions")
.createIndex(
{ receivedAt: 1 },
{ name: "expiration", expireAfterSeconds: 120 }
);

// Create location index for standard taxis
await db.collection("latestTaxiPositions").createIndex(
{ location: "2dsphere" },
{
name: "locationStandard",
partialFilterExpression: { "taxi.isSpecialNeedVehicle": false },
}
);

// Create location index for minivans taxis
await db.collection("latestTaxiPositions").createIndex(
{ location: "2dsphere" },
{
name: "locationMinivan",
partialFilterExpression: {
"taxi.isMpv": true,
"taxi.isSpecialNeedVehicle": false,
},
}
);

// Create location index for special need taxis
await db.collection("latestTaxiPositions").createIndex(
{ location: "2dsphere" },
{
name: "locationSpecialNeed",
partialFilterExpression: { "taxi.isSpecialNeedVehicle": true },
}
);
}

0 comments on commit be2949e

Please sign in to comment.