gs-idb-pro 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.cjs +18 -3
- package/lib/index.d.ts +26 -16
- package/lib/index.js +18 -3
- package/lib/index.web.js +18 -3
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
|
@@ -607,17 +607,22 @@ class DataWriter extends DataReader {
|
|
|
607
607
|
return this.batchWrite((w) => returns ? gsBase.asyncMap(records, (v) => w.addOrChange(v)) : gsBase.asyncForEach(records, (v) => w.addOrChange(v)), !0);
|
|
608
608
|
}
|
|
609
609
|
delete(pk, returns) {
|
|
610
|
+
const {
|
|
611
|
+
returns: getOld,
|
|
612
|
+
physical
|
|
613
|
+
} = gsBase.isBoolean(returns) ? { returns } : returns || {}, { storeSchema } = this, softDeletedField = storeSchema.softDeletedField, requiredOld = !!(!physical && softDeletedField?.name);
|
|
610
614
|
return this.changeByPk({
|
|
611
615
|
pk,
|
|
612
|
-
getOld:
|
|
616
|
+
getOld: requiredOld || getOld,
|
|
613
617
|
fn: (store, pk2, newValue, oldValue) => {
|
|
614
|
-
if (store.delete(pk2), !!
|
|
618
|
+
if (requiredOld ? oldValue && (oldValue = checkUpdateValue(storeSchema, { [softDeletedField.name]: gsIdbBasic.Bool.True }, oldValue), store.put(oldValue)) : store.delete(pk2), !!getOld)
|
|
615
619
|
return [oldValue, pk2];
|
|
616
620
|
}
|
|
617
621
|
});
|
|
618
622
|
}
|
|
619
623
|
deleteMany(keys, returns) {
|
|
620
|
-
|
|
624
|
+
const { returns: hasRtn } = gsBase.isBoolean(returns) ? { returns } : returns || {};
|
|
625
|
+
return this.batchWrite((w) => hasRtn ? gsBase.asyncMap(keys, (v) => w.delete(v, !0)) : gsBase.asyncForEach(keys, (v) => w.delete(v)), !0);
|
|
621
626
|
}
|
|
622
627
|
deleteRange(query, returns) {
|
|
623
628
|
const {
|
|
@@ -1041,6 +1046,16 @@ async function upgradeDb(dbSchema, database, e, request) {
|
|
|
1041
1046
|
}
|
|
1042
1047
|
}
|
|
1043
1048
|
function validateDataOperationSchema(schema, dbSchema) {
|
|
1049
|
+
return Object.isFrozen(dbSchema) ? frozenValidate(schema) : initValidate(schema, dbSchema);
|
|
1050
|
+
}
|
|
1051
|
+
function frozenValidate(schema, dbSchema) {
|
|
1052
|
+
let { store, index } = schema;
|
|
1053
|
+
const target = { store: gsBase.isString(store) ? store : store.name };
|
|
1054
|
+
return index && (target.index = gsBase.isString(index) ? index : index.name), {
|
|
1055
|
+
target
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
function initValidate(schema, dbSchema) {
|
|
1044
1059
|
let { store, index } = schema;
|
|
1045
1060
|
const { storeTemplate } = dbSchema, { storeSchemas = [] } = dbSchema, storeName = gsBase.isString(store) ? store : store.name, storeIndex = storeSchemas.findIndex((s) => s === storeName || s.name === storeName), existStore = storeIndex > -1 && storeSchemas[storeIndex];
|
|
1046
1061
|
let tmp;
|
package/lib/index.d.ts
CHANGED
|
@@ -365,7 +365,7 @@ interface IDbMap<K extends StrOrNum = StrOrNum, V = any, Tar extends OperationTa
|
|
|
365
365
|
batch<R = any, T extends V = V>(fn: (map: IDbMap<K, T, NativeTarget>) => R | Promise<R>): Promise<R>;
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
-
interface IGetAllArgs
|
|
368
|
+
interface IGetAllArgs {
|
|
369
369
|
query?: IDbQuery | null;
|
|
370
370
|
direction?: IDBCursorDirection;
|
|
371
371
|
/**
|
|
@@ -381,7 +381,7 @@ interface IDataReader<Row = any, Tar extends OperationTarget = OperationTarget>
|
|
|
381
381
|
* @param limit 最多返回条数,默认值为1000
|
|
382
382
|
*/
|
|
383
383
|
all(query?: IDbQuery, limit?: number): Promise<Row[]>;
|
|
384
|
-
all(args?: IGetAllArgs
|
|
384
|
+
all(args?: IGetAllArgs): Promise<Row[]>;
|
|
385
385
|
/**
|
|
386
386
|
* 返回满足条件的第一条数据
|
|
387
387
|
* @param key
|
|
@@ -483,15 +483,21 @@ interface IChangeRangeArg<Row> {
|
|
|
483
483
|
*/
|
|
484
484
|
direction?: IDBCursorDirection;
|
|
485
485
|
}
|
|
486
|
+
interface IDeleteRangeOption<Rtn extends boolean | undefined> extends IDeleteOption<Rtn> {
|
|
487
|
+
/**
|
|
488
|
+
* 游标滚动方向,默认为`prev`
|
|
489
|
+
*/
|
|
490
|
+
direction?: IDBCursorDirection;
|
|
491
|
+
}
|
|
486
492
|
interface IRangeWriter<Row> {
|
|
487
493
|
deleteRange(key: IDbQuery, returns?: false): Promise<void>;
|
|
488
494
|
deleteRange(key: IDbQuery, returns: true): Promise<DbRecordResult<Row>[]>;
|
|
489
|
-
deleteRange(key: IDbQuery, option:
|
|
490
|
-
deleteRange(key: IDbQuery, option:
|
|
495
|
+
deleteRange(key: IDbQuery, option: IDeleteRangeOption<false | undefined>): Promise<void>;
|
|
496
|
+
deleteRange(key: IDbQuery, option: IDeleteRangeOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
491
497
|
deleteRangeMany(keys: IDbQuery[], returns?: false): Promise<void>;
|
|
492
498
|
deleteRangeMany(keys: IDbQuery[], returns: true): Promise<DbRecordResult<Row>[][]>;
|
|
493
|
-
deleteRangeMany(keys: IDbQuery[], option:
|
|
494
|
-
deleteRangeMany(keys: IDbQuery[], option:
|
|
499
|
+
deleteRangeMany(keys: IDbQuery[], option: IDeleteRangeOption<false | undefined>): Promise<void>;
|
|
500
|
+
deleteRangeMany(keys: IDbQuery[], option: IDeleteRangeOption<true>): Promise<DbRecordResult<Row>[][]>;
|
|
495
501
|
changeRange(arg: DbRecord<Partial<Row>> | IChangeRangeArg<Row>, returns?: false): Promise<void>;
|
|
496
502
|
changeRange(arg: DbRecord<Partial<Row>> | IChangeRangeArg<Row>, returns: true): Promise<DbRecordResult<Row>[]>;
|
|
497
503
|
changeRangeMany(args: DbRecord<Partial<Row>> | IChangeRangeArg<Row>[], returns?: false): Promise<void>;
|
|
@@ -503,10 +509,6 @@ interface IChangeManyOption<Rtn extends boolean | undefined> {
|
|
|
503
509
|
returns?: Rtn;
|
|
504
510
|
}
|
|
505
511
|
interface IDeleteOption<Rtn extends boolean | undefined> {
|
|
506
|
-
/**
|
|
507
|
-
* 游标滚动方向,默认为`prev`
|
|
508
|
-
*/
|
|
509
|
-
direction?: IDBCursorDirection;
|
|
510
512
|
/**
|
|
511
513
|
* 在设置了`softDeletedField`时,是否进行物理删除
|
|
512
514
|
* - 如果值为`false`则仅使用`softDeletedField.name`进行标记
|
|
@@ -570,8 +572,12 @@ interface IDataWriter<Row = any, Tar extends OperationTarget = OperationTarget>
|
|
|
570
572
|
*/
|
|
571
573
|
delete(key: IDbQuery, returns?: false): Promise<void>;
|
|
572
574
|
delete(key: IDbQuery, returns: true): Promise<DbRecordResult<Row>>;
|
|
575
|
+
delete(key: IDbQuery, option: IDeleteOption<false | undefined>): Promise<void>;
|
|
576
|
+
delete(key: IDbQuery, option: IDeleteOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
573
577
|
deleteMany(keys: IDbQuery[], returns?: false): Promise<void>;
|
|
574
578
|
deleteMany(keys: IDbQuery[], returns: true): Promise<DbRecordResult<Row>[]>;
|
|
579
|
+
deleteMany(key: IDbQuery, option: IDeleteOption<false | undefined>): Promise<void>;
|
|
580
|
+
deleteMany(key: IDbQuery, option: IDeleteOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
575
581
|
/**
|
|
576
582
|
* 批量写入
|
|
577
583
|
* @param fn
|
|
@@ -901,7 +907,7 @@ declare class DataOperators<S1 = any, S2 = any, S3 = any, S4 = any, S5 = any> im
|
|
|
901
907
|
|
|
902
908
|
declare class DataReader<Row, Tar extends OperationTarget = OperationTarget> extends DataOperationBase implements IDataReader<Row, Tar> {
|
|
903
909
|
all(query?: IDbQuery, limit?: number): Promise<Row[]>;
|
|
904
|
-
all(args?: IGetAllArgs
|
|
910
|
+
all(args?: IGetAllArgs): Promise<Row[]>;
|
|
905
911
|
count(): Promise<number>;
|
|
906
912
|
count(query: IDbQuery | FindFn<Row>, direction?: IDBCursorDirection): Promise<number>;
|
|
907
913
|
count(query: IDbQuery, fn: FindFn<Row>, direction?: IDBCursorDirection): Promise<number>;
|
|
@@ -956,16 +962,20 @@ declare class DataWriter<Row, Tar extends OperationTarget = OperationTarget> ext
|
|
|
956
962
|
addOrChangeMany(records: DbRecord<Partial<Row>>[], returns: true): Promise<DbRecordResult<Row>[]>;
|
|
957
963
|
delete(key: IDbQuery, returns?: false): Promise<void>;
|
|
958
964
|
delete(key: IDbQuery, returns: true): Promise<DbRecordResult<Row>>;
|
|
965
|
+
delete(key: IDbQuery, option: IDeleteOption<false | undefined>): Promise<void>;
|
|
966
|
+
delete(key: IDbQuery, option: IDeleteOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
959
967
|
deleteMany(keys: IDbQuery[], returns?: false): Promise<void>;
|
|
960
968
|
deleteMany(keys: IDbQuery[], returns: true): Promise<DbRecordResult<Row>[]>;
|
|
969
|
+
deleteMany(key: IDbQuery, option: IDeleteOption<false | undefined>): Promise<void>;
|
|
970
|
+
deleteMany(key: IDbQuery, option: IDeleteOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
961
971
|
deleteRange(key: IDbQuery, returns?: false): Promise<void>;
|
|
962
972
|
deleteRange(key: IDbQuery, returns: true): Promise<DbRecordResult<Row>[]>;
|
|
963
|
-
deleteRange(key: IDbQuery, option:
|
|
964
|
-
deleteRange(key: IDbQuery, option:
|
|
973
|
+
deleteRange(key: IDbQuery, option: IDeleteRangeOption<false | undefined>): Promise<void>;
|
|
974
|
+
deleteRange(key: IDbQuery, option: IDeleteRangeOption<true>): Promise<DbRecordResult<Row>[]>;
|
|
965
975
|
deleteRangeMany(keys: IDbQuery[], returns?: false): Promise<void>;
|
|
966
976
|
deleteRangeMany(keys: IDbQuery[], returns: true): Promise<DbRecordResult<Row>[][]>;
|
|
967
|
-
deleteRangeMany(keys: IDbQuery[], option:
|
|
968
|
-
deleteRangeMany(keys: IDbQuery[], option:
|
|
977
|
+
deleteRangeMany(keys: IDbQuery[], option: IDeleteRangeOption<false | undefined>): Promise<void>;
|
|
978
|
+
deleteRangeMany(keys: IDbQuery[], option: IDeleteRangeOption<true>): Promise<DbRecordResult<Row>[][]>;
|
|
969
979
|
changeRange(arg: DbRecord<Partial<Row>> | IChangeRangeArg<Row>, returns?: false): Promise<void>;
|
|
970
980
|
changeRange(arg: DbRecord<Partial<Row>> | IChangeRangeArg<Row>, returns: true): Promise<DbRecordResult<Row>[]>;
|
|
971
981
|
changeRangeMany(args: DbRecord<Partial<Row>> | IChangeRangeArg<Row>[], returns?: false): Promise<void>;
|
|
@@ -1116,4 +1126,4 @@ declare function generateDbSchema(db: string, option?: IGenerateOption<undefined
|
|
|
1116
1126
|
declare function generateDbSchema(db: string, option: IGenerateOption<true | number>): Promise<string>;
|
|
1117
1127
|
|
|
1118
1128
|
export { Break, Continue, ContinueKey, ContinuePrimaryKey, DataOperationBase, DataOperators, DataReader, DataWriter, DbIterator, DbIteratorParsers, DbMap, Delete, Finished, IDbPro, NextKey, NextPrimaryKey, Save, StoreUpgradeable, UpgradeContext, dbMap, dbStore, dbStores, defaultSpecialFields, defaultStoreSchemaTemplate, generateDbSchema, isIDbQuery, isNativeTarget, parseDbNoneKeyPathRecord, parseIDbQuery, releaseDefaultDB, validateSchemaWithDefaults, versionDiffValidate, versionSameValidate };
|
|
1119
|
-
export type { ArrayDbRecord, DBSchema, DataOperationSchema, DbIteratorParsersKey, DbNoneKeyPathRecord, DbRecord, DbRecordResult, ExportDataTo, FindFn, GetRowMapper, IChangeManyOption, IChangeRangeArg, ICursorArg, ICursorOption, ICursorQueryable, ICursorReader, ICursorResultArg, ICursorRow, ICursorWriter, IDataOperationSchema, IDataOperatorFactory, IDataOperators, IDataReader, IDataWriter, IDbGtRange, IDbGteRange, IDbIterator, IDbIteratorArg, IDbIteratorOption, IDbIteratorParser, IDbLtGtRange, IDbLtGteRange, IDbLtRange, IDbLteGtRange, IDbLteGteRange, IDbLteRange, IDbMap, IDbNoneKeyPathRecord, IDbQuery, IDbRange, IDbSchema, IDbVersionBounds, IDeleteOption, IFilterArg, IFindArg, IFindMapArg, IForEachArg, IForEachResultArg, IForEachable, IGenerateOption, IGetAllArgs, IIDbPro, IIndexSchema, IInfoTarget, IModifyResult, IMultiBackup, INativeOperationResult, IOpenCursorArg, IPage, IPageArg, IPageInfo, IPageableQuery, IRangeWriter, ISpecialFieldSchema, ISpecialFields, IStoreSchema, IStoreSchemaTemplate, IStoreUpgradeable, IUpgradeContext, IUpgradeContextArgs, IValidDataOperationSchema, IValueResult, IVersionData, IVersionValidateContext, IVoidResult, ImportUse, IndexSchema, NativeReader, NativeTarget, NativeWriter, OperationTarget, ReadCallFn, RequiredDbNoneKeyPathRecord, SaveRowMapper, SpecialFieldSchema, StoreSchema, ValueCallFn, ValueControl, ValueModifyFn, VersionValidateFn, VoidCallFn, VoidControl, VoidModifyFn, VoidResult, WriteCallFn };
|
|
1129
|
+
export type { ArrayDbRecord, DBSchema, DataOperationSchema, DbIteratorParsersKey, DbNoneKeyPathRecord, DbRecord, DbRecordResult, ExportDataTo, FindFn, GetRowMapper, IChangeManyOption, IChangeRangeArg, ICursorArg, ICursorOption, ICursorQueryable, ICursorReader, ICursorResultArg, ICursorRow, ICursorWriter, IDataOperationSchema, IDataOperatorFactory, IDataOperators, IDataReader, IDataWriter, IDbGtRange, IDbGteRange, IDbIterator, IDbIteratorArg, IDbIteratorOption, IDbIteratorParser, IDbLtGtRange, IDbLtGteRange, IDbLtRange, IDbLteGtRange, IDbLteGteRange, IDbLteRange, IDbMap, IDbNoneKeyPathRecord, IDbQuery, IDbRange, IDbSchema, IDbVersionBounds, IDeleteOption, IDeleteRangeOption, IFilterArg, IFindArg, IFindMapArg, IForEachArg, IForEachResultArg, IForEachable, IGenerateOption, IGetAllArgs, IIDbPro, IIndexSchema, IInfoTarget, IModifyResult, IMultiBackup, INativeOperationResult, IOpenCursorArg, IPage, IPageArg, IPageInfo, IPageableQuery, IRangeWriter, ISpecialFieldSchema, ISpecialFields, IStoreSchema, IStoreSchemaTemplate, IStoreUpgradeable, IUpgradeContext, IUpgradeContextArgs, IValidDataOperationSchema, IValueResult, IVersionData, IVersionValidateContext, IVoidResult, ImportUse, IndexSchema, NativeReader, NativeTarget, NativeWriter, OperationTarget, ReadCallFn, RequiredDbNoneKeyPathRecord, SaveRowMapper, SpecialFieldSchema, StoreSchema, ValueCallFn, ValueControl, ValueModifyFn, VersionValidateFn, VoidCallFn, VoidControl, VoidModifyFn, VoidResult, WriteCallFn };
|
package/lib/index.js
CHANGED
|
@@ -607,17 +607,22 @@ class DataWriter extends DataReader {
|
|
|
607
607
|
return this.batchWrite((w) => returns ? asyncMap(records, (v) => w.addOrChange(v)) : asyncForEach(records, (v) => w.addOrChange(v)), !0);
|
|
608
608
|
}
|
|
609
609
|
delete(pk, returns) {
|
|
610
|
+
const {
|
|
611
|
+
returns: getOld,
|
|
612
|
+
physical
|
|
613
|
+
} = isBoolean(returns) ? { returns } : returns || {}, { storeSchema } = this, softDeletedField = storeSchema.softDeletedField, requiredOld = !!(!physical && softDeletedField?.name);
|
|
610
614
|
return this.changeByPk({
|
|
611
615
|
pk,
|
|
612
|
-
getOld:
|
|
616
|
+
getOld: requiredOld || getOld,
|
|
613
617
|
fn: (store, pk2, newValue, oldValue) => {
|
|
614
|
-
if (store.delete(pk2), !!
|
|
618
|
+
if (requiredOld ? oldValue && (oldValue = checkUpdateValue(storeSchema, { [softDeletedField.name]: Bool.True }, oldValue), store.put(oldValue)) : store.delete(pk2), !!getOld)
|
|
615
619
|
return [oldValue, pk2];
|
|
616
620
|
}
|
|
617
621
|
});
|
|
618
622
|
}
|
|
619
623
|
deleteMany(keys, returns) {
|
|
620
|
-
|
|
624
|
+
const { returns: hasRtn } = isBoolean(returns) ? { returns } : returns || {};
|
|
625
|
+
return this.batchWrite((w) => hasRtn ? asyncMap(keys, (v) => w.delete(v, !0)) : asyncForEach(keys, (v) => w.delete(v)), !0);
|
|
621
626
|
}
|
|
622
627
|
deleteRange(query, returns) {
|
|
623
628
|
const {
|
|
@@ -1041,6 +1046,16 @@ async function upgradeDb(dbSchema, database, e, request) {
|
|
|
1041
1046
|
}
|
|
1042
1047
|
}
|
|
1043
1048
|
function validateDataOperationSchema(schema, dbSchema) {
|
|
1049
|
+
return Object.isFrozen(dbSchema) ? frozenValidate(schema) : initValidate(schema, dbSchema);
|
|
1050
|
+
}
|
|
1051
|
+
function frozenValidate(schema, dbSchema) {
|
|
1052
|
+
let { store, index } = schema;
|
|
1053
|
+
const target = { store: isString(store) ? store : store.name };
|
|
1054
|
+
return index && (target.index = isString(index) ? index : index.name), {
|
|
1055
|
+
target
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
function initValidate(schema, dbSchema) {
|
|
1044
1059
|
let { store, index } = schema;
|
|
1045
1060
|
const { storeTemplate } = dbSchema, { storeSchemas = [] } = dbSchema, storeName = isString(store) ? store : store.name, storeIndex = storeSchemas.findIndex((s) => s === storeName || s.name === storeName), existStore = storeIndex > -1 && storeSchemas[storeIndex];
|
|
1046
1061
|
let tmp;
|
package/lib/index.web.js
CHANGED
|
@@ -906,17 +906,22 @@ class DataWriter extends DataReader {
|
|
|
906
906
|
return this.batchWrite((w) => returns ? asyncMap(records, (v) => w.addOrChange(v)) : asyncForEach(records, (v) => w.addOrChange(v)), !0);
|
|
907
907
|
}
|
|
908
908
|
delete(pk, returns) {
|
|
909
|
+
const {
|
|
910
|
+
returns: getOld,
|
|
911
|
+
physical
|
|
912
|
+
} = isBoolean(returns) ? { returns } : returns || {}, { storeSchema } = this, softDeletedField = storeSchema.softDeletedField, requiredOld = !!(!physical && softDeletedField?.name);
|
|
909
913
|
return this.changeByPk({
|
|
910
914
|
pk,
|
|
911
|
-
getOld:
|
|
915
|
+
getOld: requiredOld || getOld,
|
|
912
916
|
fn: (store, pk2, newValue, oldValue) => {
|
|
913
|
-
if (store.delete(pk2), !!
|
|
917
|
+
if (requiredOld ? oldValue && (oldValue = checkUpdateValue(storeSchema, { [softDeletedField.name]: Bool.True }, oldValue), store.put(oldValue)) : store.delete(pk2), !!getOld)
|
|
914
918
|
return [oldValue, pk2];
|
|
915
919
|
}
|
|
916
920
|
});
|
|
917
921
|
}
|
|
918
922
|
deleteMany(keys, returns) {
|
|
919
|
-
|
|
923
|
+
const { returns: hasRtn } = isBoolean(returns) ? { returns } : returns || {};
|
|
924
|
+
return this.batchWrite((w) => hasRtn ? asyncMap(keys, (v) => w.delete(v, !0)) : asyncForEach(keys, (v) => w.delete(v)), !0);
|
|
920
925
|
}
|
|
921
926
|
deleteRange(query, returns) {
|
|
922
927
|
const {
|
|
@@ -1340,6 +1345,16 @@ async function upgradeDb(dbSchema, database, e, request) {
|
|
|
1340
1345
|
}
|
|
1341
1346
|
}
|
|
1342
1347
|
function validateDataOperationSchema(schema, dbSchema) {
|
|
1348
|
+
return Object.isFrozen(dbSchema) ? frozenValidate(schema) : initValidate(schema, dbSchema);
|
|
1349
|
+
}
|
|
1350
|
+
function frozenValidate(schema, dbSchema) {
|
|
1351
|
+
let { store, index } = schema;
|
|
1352
|
+
const target = { store: isString(store) ? store : store.name };
|
|
1353
|
+
return index && (target.index = isString(index) ? index : index.name), {
|
|
1354
|
+
target
|
|
1355
|
+
};
|
|
1356
|
+
}
|
|
1357
|
+
function initValidate(schema, dbSchema) {
|
|
1343
1358
|
let { store, index } = schema;
|
|
1344
1359
|
const { storeTemplate } = dbSchema, { storeSchemas = [] } = dbSchema, storeName = isString(store) ? store : store.name, storeIndex = storeSchemas.findIndex((s) => s === storeName || s.name === storeName), existStore = storeIndex > -1 && storeSchemas[storeIndex];
|
|
1345
1360
|
let tmp;
|