mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-08-17 21:25:54 +02:00
70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
import dotenv from 'dotenv';
|
|
import { MongoClient } from 'mongodb';
|
|
import { generateId } from '../Utils.js';
|
|
dotenv.config({ quiet: true });
|
|
|
|
export default async function createContactIndex() {
|
|
// Provide the complete MongoDB connection URL with the database name
|
|
const uri = process.env.MONGODB_URI || 'mongodb://localhost:27017/dev'; // Replace with your MongoDB URI
|
|
const client = new MongoClient(uri);
|
|
try {
|
|
await client.connect();
|
|
const database = client.db();
|
|
|
|
const migrationCollection = database.collection('Migrationdb');
|
|
const migrationName = 'contactIndex_1';
|
|
|
|
// Check if the migration has already been executed
|
|
const migrationExists = await migrationCollection.findOne({ name: migrationName });
|
|
|
|
if (migrationExists) {
|
|
console.log(' INFO The unqiue index for contracts_Contactbook is already present.');
|
|
return;
|
|
}
|
|
|
|
const collection = database.collection('contracts_Contactbook');
|
|
|
|
// Create the unique index, but only on documents where IsImported is true
|
|
const query = {
|
|
IsImported: { $eq: true },
|
|
$or: [{ IsDeleted: false }, { IsDeleted: { $eq: false } }],
|
|
}; // Include documents with IsImported: true and IsDeleted not true
|
|
await collection.createIndex(
|
|
{ _p_CreatedBy: 1, Email: 1, IsImported: 1 },
|
|
{ unique: true, partialFilterExpression: query }
|
|
);
|
|
|
|
// Save the migration record in the migrationdb collection
|
|
await migrationCollection.insertOne({
|
|
_id: generateId(10),
|
|
name: migrationName,
|
|
_created_at: new Date(),
|
|
_updated_at: new Date(),
|
|
executedAt: new Date(),
|
|
details: 'Created unique index on CreatedBy, IsImported, Email',
|
|
});
|
|
|
|
const migrationdb = database.collection('_SCHEMA');
|
|
// create migrationdb SCHEM migrationdb
|
|
|
|
// Document to be inserted
|
|
const schemaDocument = {
|
|
_id: 'Migrationdb',
|
|
objectId: 'string',
|
|
name: 'string',
|
|
updatedAt: 'date',
|
|
createdAt: 'date',
|
|
executedAt: 'date',
|
|
details: 'string',
|
|
};
|
|
|
|
// Insert the document
|
|
await migrationdb.insertOne(schemaDocument);
|
|
console.log(' SUCCESS The unqiue index for contracts_Contactbook is already created.');
|
|
} catch (error) {
|
|
console.log(' ERROR Running unqiue index for contracts_Contactbook migration:', error);
|
|
} finally {
|
|
await client.close();
|
|
}
|
|
}
|