fix(core): update

This commit is contained in:
2020-08-18 12:01:46 +00:00
parent 72894e3ef1
commit 0203eabdfd
10 changed files with 7706 additions and 1587 deletions

View File

@ -20,7 +20,7 @@ export type TDelayedDbCreation = () => SmartdataDb;
* @param dbArg
*/
export function Collection(dbArg: SmartdataDb | TDelayedDbCreation) {
return function(constructor) {
return function (constructor) {
if (dbArg instanceof SmartdataDb) {
// tslint:disable-next-line: no-string-literal
constructor['smartdataCollection'] = new SmartdataCollection(constructor, dbArg);
@ -58,7 +58,7 @@ export class SmartdataCollection<T> {
if (!this.mongoDbCollection) {
// connect this instance to a MongoDB collection
const availableMongoDbCollections = await this.smartdataDb.mongoDb.collections();
const wantedCollection = availableMongoDbCollections.find(collection => {
const wantedCollection = availableMongoDbCollections.find((collection) => {
return collection.collectionName === this.collectionName;
});
if (!wantedCollection) {
@ -76,7 +76,7 @@ export class SmartdataCollection<T> {
for (const key of keyArrayArg) {
if (!this.uniqueIndexes.includes(key)) {
this.mongoDbCollection.createIndex(key, {
unique: true
unique: true,
});
// make sure we only call this once and not for every doc we create
this.uniqueIndexes.push(key);
@ -139,7 +139,7 @@ export class SmartdataCollection<T> {
await this.checkDoc(dbDocArg);
const identifiableObject = await dbDocArg.createIdentifiableObject();
await this.mongoDbCollection.deleteOne(identifiableObject, {
w: 1
w: 1,
});
}

View File

@ -3,7 +3,6 @@ import { ObjectMap } from '@pushrocks/lik';
import { SmartdataCollection } from './smartdata.classes.collection';
import * as mongoHelpers from './smartdata.mongohelpers';
import { logger } from './smartdata.logging';
/**
@ -20,7 +19,13 @@ export interface ISmartdataOptions {
/**
* the db to use for the project
*/
mongoDbName: string;
mongoDbName?: string;
/**
* a username to use to connect to the database
*/
mongoDbUser?: string;
/**
* an optional password that will be replace <PASSWORD> in the connection string
@ -46,17 +51,17 @@ export class SmartdataDb {
* connects to the database that was specified during instance creation
*/
public async init(): Promise<any> {
let finalConnectionUrl = this.smartdataOptions.mongoDbUrl;
if (this.smartdataOptions.mongoDbPass) {
finalConnectionUrl = mongoHelpers.addPassword(
this.smartdataOptions.mongoDbUrl,
this.smartdataOptions.mongoDbPass
);
}
console.log(`connection Url: ${finalConnectionUrl}`);
const finalConnectionUrl = this.smartdataOptions.mongoDbUrl
.replace('<USERNAME>', this.smartdataOptions.mongoDbUser)
.replace('<username>', this.smartdataOptions.mongoDbUser)
.replace('<PASSWORD>', this.smartdataOptions.mongoDbPass)
.replace('<password>', this.smartdataOptions.mongoDbPass)
.replace('<DBNAME>', this.smartdataOptions.mongoDbName)
.replace('<dbname>', this.smartdataOptions.mongoDbName);
this.mongoDbClient = await plugins.mongodb.MongoClient.connect(finalConnectionUrl, {
useNewUrlParser: true,
useUnifiedTopology: true
useUnifiedTopology: true,
});
this.mongoDb = this.mongoDbClient.db(this.smartdataOptions.mongoDbName);
this.status = 'connected';
@ -84,7 +89,7 @@ export class SmartdataDb {
* @returns DbTable
*/
public async getSmartdataCollectionByName<T>(nameArg: string): Promise<SmartdataCollection<T>> {
const resultCollection = this.smartdataCollectionMap.find(dbTableArg => {
const resultCollection = this.smartdataCollectionMap.find((dbTableArg) => {
return dbTableArg.collectionName === nameArg;
});
return resultCollection;

View File

@ -89,7 +89,7 @@ export class SmartDataDbDoc<T, TImplements> {
}
}
public static async getInstances<T>(filterArg): Promise<T[]> {
public static async getInstances<T>(filterArg: Partial<T>): Promise<T[]> {
const self: any = this; // fool typesystem
let referenceMongoDBCollection: SmartdataCollection<T>;
@ -111,7 +111,7 @@ export class SmartDataDbDoc<T, TImplements> {
return returnArray;
}
public static async getInstance<T>(filterArg): Promise<T> {
public static async getInstance<T>(filterArg: Partial<T>): Promise<T> {
const result = await this.getInstances<T>(filterArg);
if (result && result.length > 0) {
return result[0];

View File

@ -1,7 +0,0 @@
export const addUsername = (mongoUrlArg: string, usernameArg: string): string => {
return mongoUrlArg.replace('<USERNAME>', usernameArg);
};
export const addPassword = (mongoUrlArg: string, passwordArg: string): string => {
return mongoUrlArg.replace('<PASSWORD>', passwordArg);
};