Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
c066464526 | |||
0105aa2a18 | |||
4c2477c269 | |||
ea0d2bb251 | |||
b3e30a8711 | |||
64621dd38f | |||
117c257a27 | |||
b30522c505 | |||
57d2d56d00 | |||
90751002aa | |||
7606e074a5 | |||
7ec39e397e | |||
21d8d3dc32 | |||
6d456955d8 | |||
d08544c782 | |||
bda9ac8a07 | |||
d27dafba2b | |||
b6594de18c | |||
d9246cbeac |
158
changelog.md
Normal file
158
changelog.md
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## 2024-09-05 - 5.2.10 - fix(smartdata.classes.doc)
|
||||||
|
Fix issue with array handling in convertFilterForMongoDb function
|
||||||
|
|
||||||
|
- Corrected the logic to properly handle array filters in the convertFilterForMongoDb function to avoid incorrect assignments.
|
||||||
|
|
||||||
|
## 2024-09-05 - 5.2.9 - fix(smartdata.classes.doc)
|
||||||
|
Fixed issue with convertFilterForMongoDb to handle array operators.
|
||||||
|
|
||||||
|
- Updated the convertFilterForMongoDb function in smartdata.classes.doc.ts to properly handle array operators like $in and $all.
|
||||||
|
|
||||||
|
## 2024-09-05 - 5.2.8 - fix(smartdata.classes.doc)
|
||||||
|
Fix key handling in convertFilterForMongoDb function
|
||||||
|
|
||||||
|
- Fixed an issue in convertFilterForMongoDb that allowed keys with dots which could cause errors.
|
||||||
|
|
||||||
|
## 2024-09-05 - 5.2.7 - fix(core)
|
||||||
|
Fixed issue with handling filter keys containing dots in smartdata.classes.doc.ts
|
||||||
|
|
||||||
|
- Fixed an error in the convertFilterForMongoDb function which previously threw an error when keys contained dots.
|
||||||
|
|
||||||
|
## 2024-06-18 - 5.2.6 - Chore
|
||||||
|
Maintenance Release
|
||||||
|
|
||||||
|
- Release version 5.2.6
|
||||||
|
|
||||||
|
## 2024-05-31 - 5.2.2 - Bug Fixes
|
||||||
|
Fixes and Maintenance
|
||||||
|
|
||||||
|
- Fixed issue where `_createdAt` and `_updatedAt` registered saveableProperties for all document types
|
||||||
|
|
||||||
|
## 2024-04-15 - 5.1.2 - New Feature
|
||||||
|
Enhancements and Bug Fixes
|
||||||
|
|
||||||
|
- Added static `.getCount({})` method to `SmartDataDbDoc`
|
||||||
|
- Changed fields `_createdAt` and `_updatedAt` to ISO format
|
||||||
|
|
||||||
|
## 2024-04-14 - 5.0.43 - New Feature
|
||||||
|
New Feature Addition
|
||||||
|
|
||||||
|
- Added default `_createdAt` and `_updatedAt` fields, fixes #1
|
||||||
|
|
||||||
|
## 2024-03-30 - 5.0.41 - Bug Fixes
|
||||||
|
Improvements and Fixes
|
||||||
|
|
||||||
|
- Improved `tsconfig.json` for ES Module use
|
||||||
|
|
||||||
|
## 2023-07-10 - 5.0.20 - Chore
|
||||||
|
Organizational Changes
|
||||||
|
|
||||||
|
- Switched to new org scheme
|
||||||
|
|
||||||
|
## 2023-07-21 - 5.0.21 to 5.0.26 - Fixes
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2023-07-21 - 5.0.20 - Chore
|
||||||
|
Organizational Changes
|
||||||
|
|
||||||
|
- Switch to the new org scheme
|
||||||
|
|
||||||
|
## 2023-06-25 - 5.0.14 to 5.0.19 - Fixes
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2022-05-17 - 5.0.0 - Major Update
|
||||||
|
Breaking Changes
|
||||||
|
|
||||||
|
- Switched to ESM
|
||||||
|
|
||||||
|
## 2022-05-18 - 5.0.2 - Bug Fixes
|
||||||
|
Bug Fixes
|
||||||
|
|
||||||
|
- The `watcher.changeSubject` now emits the correct type into observer functions
|
||||||
|
|
||||||
|
## 2022-05-17 - 5.0.1 - Chore
|
||||||
|
Testing Improvements
|
||||||
|
|
||||||
|
- Tests now use `@pushrocks/smartmongo` backed by `wiredTiger`
|
||||||
|
|
||||||
|
## 2022-05-17 to 2022-11-08 - 5.0.8 to 5.0.10
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2021-11-12 - 4.0.17 to 4.0.20
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2021-09-17 - 4.0.10 to 4.0.16
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2021-06-09 - 4.0.1 to 4.0.9
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2021-06-06 - 4.0.0 - Major Update
|
||||||
|
Major Release
|
||||||
|
|
||||||
|
- Maintenance and core updates
|
||||||
|
|
||||||
|
## 2021-05-17 - 3.1.56 - Chore
|
||||||
|
Maintenance Release
|
||||||
|
|
||||||
|
- Release version 3.1.56
|
||||||
|
|
||||||
|
## 2020-09-09 - 3.1.44 to 3.1.52
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2020-06-12 - 3.1.26 to 3.1.28
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2020-02-18 - 3.1.23 to 3.1.25
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2019-09-11 - 3.1.20 to 3.1.22
|
||||||
|
Multiple Fix Releases
|
||||||
|
|
||||||
|
- Various core updates and bug fixes
|
||||||
|
|
||||||
|
## 2018-07-10 - 3.0.5 - New Feature
|
||||||
|
Added Feature
|
||||||
|
|
||||||
|
- Added custom unique indexes to `SmartdataDoc`
|
||||||
|
|
||||||
|
## 2018-07-08 - 3.0.1 - Chore
|
||||||
|
Dependencies Update
|
||||||
|
|
||||||
|
- Updated mongodb dependencies
|
||||||
|
|
||||||
|
## 2018-07-08 - 3.0.0 - Major Update
|
||||||
|
Refactor and Cleanup
|
||||||
|
|
||||||
|
- Cleaned project structure
|
||||||
|
|
||||||
|
## 2018-01-16 - 2.0.7 - Breaking Change
|
||||||
|
Big Changes
|
||||||
|
|
||||||
|
- Switched to `@pushrocks` scope and moved from `rethinkdb` to `mongodb`
|
||||||
|
|
||||||
|
## 2018-01-12 - 2.0.0 - Major Release
|
||||||
|
Core Updates
|
||||||
|
|
||||||
|
- Updated CI configurations
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@push.rocks/smartdata",
|
"name": "@push.rocks/smartdata",
|
||||||
"version": "5.2.1",
|
"version": "5.2.10",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.",
|
"description": "An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.",
|
||||||
"main": "dist_ts/index.js",
|
"main": "dist_ts/index.js",
|
||||||
@ -13,14 +13,14 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+ssh://git@gitlab.com/pushrocks/smartdata.git"
|
"url": "https://code.foss.global/push.rocks/smartdata.git"
|
||||||
},
|
},
|
||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://gitlab.com/pushrocks/smartdata/issues"
|
"url": "https://gitlab.com/pushrocks/smartdata/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/smartdata#README",
|
"homepage": "https://code.foss.global/push.rocks/smartdata",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@push.rocks/lik": "^6.0.14",
|
"@push.rocks/lik": "^6.0.14",
|
||||||
"@push.rocks/smartdelay": "^3.0.1",
|
"@push.rocks/smartdelay": "^3.0.1",
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* autocreated commitinfo by @pushrocks/commitinfo
|
* autocreated commitinfo by @push.rocks/commitinfo
|
||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@push.rocks/smartdata',
|
name: '@push.rocks/smartdata',
|
||||||
version: '5.2.1',
|
version: '5.2.10',
|
||||||
description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.'
|
description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.'
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,16 @@ import { SmartdataDbWatcher } from './smartdata.classes.watcher.js';
|
|||||||
|
|
||||||
export type TDocCreation = 'db' | 'new' | 'mixed';
|
export type TDocCreation = 'db' | 'new' | 'mixed';
|
||||||
|
|
||||||
|
export function globalSvDb() {
|
||||||
|
return (target: SmartDataDbDoc<unknown, unknown>, key: string) => {
|
||||||
|
console.log(`called svDb() on >${target.constructor.name}.${key}<`);
|
||||||
|
if (!target.globalSaveableProperties) {
|
||||||
|
target.globalSaveableProperties = [];
|
||||||
|
}
|
||||||
|
target.globalSaveableProperties.push(key);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* saveable - saveable decorator to be used on class properties
|
* saveable - saveable decorator to be used on class properties
|
||||||
*/
|
*/
|
||||||
@ -43,8 +53,12 @@ export function unI() {
|
|||||||
|
|
||||||
export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => {
|
export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => {
|
||||||
const convertedFilter: { [key: string]: any } = {};
|
const convertedFilter: { [key: string]: any } = {};
|
||||||
|
|
||||||
const convertFilterArgument = (keyPathArg2: string, filterArg2: any) => {
|
const convertFilterArgument = (keyPathArg2: string, filterArg2: any) => {
|
||||||
if (typeof filterArg2 === 'object') {
|
if (Array.isArray(filterArg2)) {
|
||||||
|
// Directly assign arrays (they might be using operators like $in or $all)
|
||||||
|
convertFilterArgument(keyPathArg2, filterArg2[0]);
|
||||||
|
} else if (typeof filterArg2 === 'object' && filterArg2 !== null) {
|
||||||
for (const key of Object.keys(filterArg2)) {
|
for (const key of Object.keys(filterArg2)) {
|
||||||
if (key.startsWith('$')) {
|
if (key.startsWith('$')) {
|
||||||
convertedFilter[keyPathArg2] = filterArg2;
|
convertedFilter[keyPathArg2] = filterArg2;
|
||||||
@ -60,6 +74,7 @@ export const convertFilterForMongoDb = (filterArg: { [key: string]: any }) => {
|
|||||||
convertedFilter[keyPathArg2] = filterArg2;
|
convertedFilter[keyPathArg2] = filterArg2;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const key of Object.keys(filterArg)) {
|
for (const key of Object.keys(filterArg)) {
|
||||||
convertFilterArgument(key, filterArg[key]);
|
convertFilterArgument(key, filterArg[key]);
|
||||||
}
|
}
|
||||||
@ -202,22 +217,27 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
|||||||
/**
|
/**
|
||||||
* updated from db in any case where doc comes from db
|
* updated from db in any case where doc comes from db
|
||||||
*/
|
*/
|
||||||
@svDb()
|
@globalSvDb()
|
||||||
_createdAt: string = (new Date()).toISOString();
|
_createdAt: string = (new Date()).toISOString();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* will be updated everytime the doc is saved
|
* will be updated everytime the doc is saved
|
||||||
*/
|
*/
|
||||||
@svDb()
|
@globalSvDb()
|
||||||
_updatedAt: string = (new Date()).toISOString();
|
_updatedAt: string = (new Date()).toISOString();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an array of saveable properties of ALL doc
|
||||||
|
*/
|
||||||
|
public globalSaveableProperties: string[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* unique indexes
|
* unique indexes
|
||||||
*/
|
*/
|
||||||
public uniqueIndexes: string[];
|
public uniqueIndexes: string[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* an array of saveable properties of a doc
|
* an array of saveable properties of a specific doc
|
||||||
*/
|
*/
|
||||||
public saveableProperties: string[];
|
public saveableProperties: string[];
|
||||||
|
|
||||||
@ -301,7 +321,11 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
|||||||
*/
|
*/
|
||||||
public async createSavableObject(): Promise<TImplements> {
|
public async createSavableObject(): Promise<TImplements> {
|
||||||
const saveableObject: unknown = {}; // is not exposed to outside, so any is ok here
|
const saveableObject: unknown = {}; // is not exposed to outside, so any is ok here
|
||||||
for (const propertyNameString of this.saveableProperties) {
|
const saveableProperties = [
|
||||||
|
...this.globalSaveableProperties,
|
||||||
|
...this.saveableProperties
|
||||||
|
]
|
||||||
|
for (const propertyNameString of saveableProperties) {
|
||||||
saveableObject[propertyNameString] = this[propertyNameString];
|
saveableObject[propertyNameString] = this[propertyNameString];
|
||||||
}
|
}
|
||||||
return saveableObject as TImplements;
|
return saveableObject as TImplements;
|
||||||
|
Reference in New Issue
Block a user