Comparing version 1.0.2 to 1.0.3
{ | ||
"name": "tsdiskdb", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "TypeScript disk-based JSON database for storing small structures with a Mongo-like interface", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -9,3 +9,3 @@ import path from "path"; | ||
export default class Collection<ModelType extends ModelTypeBase> { | ||
export default class Collection<CollectionModelType> { | ||
private _f: string; | ||
@@ -17,3 +17,5 @@ | ||
find(query?: QueryType<ModelType>): EnrichModelType<ModelType>[] { | ||
find( | ||
query?: QueryType<CollectionModelType & ModelTypeBase> | ||
): EnrichModelType<CollectionModelType & ModelTypeBase>[] { | ||
var collection = JSON.parse(util.readFromFile(this._f)); | ||
@@ -29,3 +31,5 @@ | ||
findOne(query?: QueryType<ModelType>): EnrichModelType<ModelType> { | ||
findOne( | ||
query?: QueryType<CollectionModelType & ModelTypeBase> | ||
): EnrichModelType<CollectionModelType & ModelTypeBase> { | ||
var collection = JSON.parse(util.readFromFile(this._f)); | ||
@@ -41,8 +45,18 @@ | ||
save(data: Omit<ModelType, "_id">): EnrichModelType<ModelType>; | ||
save(data: Omit<ModelType, "_id">[]): EnrichModelType<ModelType>[]; | ||
save( | ||
data: Omit<ModelType, "_id"> | Omit<ModelType, "_id">[] | ||
): EnrichModelType<ModelType> | EnrichModelType<ModelType>[] { | ||
var collection = JSON.parse(util.readFromFile(this._f)) as CollectionType<ModelType>; | ||
data: Omit<CollectionModelType & ModelTypeBase, "_id"> | ||
): EnrichModelType<CollectionModelType & ModelTypeBase>; | ||
save( | ||
data: Omit<CollectionModelType & ModelTypeBase, "_id">[] | ||
): EnrichModelType<CollectionModelType & ModelTypeBase>[]; | ||
save( | ||
data: | ||
| Omit<CollectionModelType & ModelTypeBase, "_id"> | ||
| Omit<CollectionModelType & ModelTypeBase, "_id">[] | ||
): | ||
| EnrichModelType<CollectionModelType & ModelTypeBase> | ||
| EnrichModelType<CollectionModelType & ModelTypeBase>[] { | ||
var collection = JSON.parse(util.readFromFile(this._f)) as CollectionType< | ||
CollectionModelType & ModelTypeBase | ||
>; | ||
@@ -63,3 +77,3 @@ if (isArray(data)) { | ||
_id: uuid.v4().replace(/-/g, ""), | ||
} as ModelType; | ||
} as CollectionModelType & ModelTypeBase; | ||
collection.push(d); | ||
@@ -77,3 +91,3 @@ retCollection.push(d); | ||
_id: uuid.v4().replace(/-/g, ""), | ||
} as ModelType; | ||
} as CollectionModelType & ModelTypeBase; | ||
@@ -88,4 +102,4 @@ collection.push(newData); | ||
update( | ||
query: QueryType<ModelType>, | ||
data: ModelType, | ||
query: QueryType<CollectionModelType & ModelTypeBase>, | ||
data: CollectionModelType & ModelTypeBase, | ||
options?: { | ||
@@ -100,3 +114,5 @@ multi?: boolean; | ||
} = { updated: 0, inserted: 0 }, | ||
collection = JSON.parse(util.readFromFile(this._f)) as CollectionType<ModelType>; // update | ||
collection = JSON.parse(util.readFromFile(this._f)) as CollectionType< | ||
CollectionModelType & ModelTypeBase | ||
>; // update | ||
@@ -132,3 +148,3 @@ var records = util.finder(collection, query, true); | ||
remove(query?: QueryType<ModelType>, multi?: boolean) { | ||
remove(query?: QueryType<CollectionModelType & ModelTypeBase>, multi?: boolean) { | ||
if (query) { | ||
@@ -152,4 +168,6 @@ var collection = JSON.parse(util.readFromFile(this._f)); | ||
count() { | ||
return (JSON.parse(util.readFromFile(this._f)) as CollectionType<ModelType>).length; | ||
return (JSON.parse(util.readFromFile(this._f)) as CollectionType< | ||
CollectionModelType & ModelTypeBase | ||
>).length; | ||
} | ||
} |
@@ -6,3 +6,3 @@ import path from "path"; | ||
import Collection from "./collection"; | ||
import util, { ModelTypeBase } from "./util"; | ||
import util from "./util"; | ||
@@ -13,3 +13,3 @@ type ValuesOf<T extends any[]> = T[number]; | ||
CollectionTypes extends { | ||
[key: string]: ModelTypeBase; | ||
[key: string]: object; | ||
} | ||
@@ -16,0 +16,0 @@ > { |
@@ -6,3 +6,6 @@ var fs = require("fs"); | ||
export type CollectionType<ModelType extends ModelTypeBase = ModelTypeBase> = Array<ModelType>; | ||
export type QueryType<ModelType extends ModelTypeBase> = Partial<ModelType> | undefined | null; | ||
export type QueryType<ModelType extends ModelTypeBase> = | ||
| Partial<EnrichModelType<ModelType>> | ||
| undefined | ||
| null; | ||
export type EnrichModelType<ModelType> = ModelType & ModelTypeBase; | ||
@@ -30,5 +33,5 @@ | ||
static updateFiltered<ModelType extends ModelTypeBase>( | ||
collection: CollectionType<ModelType>, | ||
query: QueryType<ModelType> = {}, | ||
static updateFiltered<CollectionModelType>( | ||
collection: CollectionType<CollectionModelType & ModelTypeBase>, | ||
query: QueryType<CollectionModelType & ModelTypeBase> = {}, | ||
data: Object, | ||
@@ -35,0 +38,0 @@ multi?: boolean |
45267
768