feature: add options for all() to limit before/after creation/id
This commit is contained in:
parent
56715a1400
commit
89eff3fb13
3 changed files with 221 additions and 38 deletions
51
fsdb.ts
51
fsdb.ts
|
@ -15,6 +15,12 @@ export type FSDB_COLLECTION_CONFIG_INPUT = Optional<FSDB_COLLECTION_CONFIG, 'id_
|
|||
export type FSDB_SEARCH_OPTIONS = {
|
||||
limit: number;
|
||||
offset?: number;
|
||||
before?: string;
|
||||
after?: string;
|
||||
modified_before?: string;
|
||||
modified_after?: string;
|
||||
id_before?: string;
|
||||
id_after?: string;
|
||||
};
|
||||
|
||||
export interface FSDB_INDEXER<T> {
|
||||
|
@ -226,6 +232,51 @@ export class FSDB_COLLECTION<T extends Record<string, any>> {
|
|||
exts: ['json']
|
||||
})
|
||||
) {
|
||||
let item_stat = null;
|
||||
if (options.before) {
|
||||
item_stat = item_stat ?? await Deno.lstat(entry.path);
|
||||
const birthtime = (item_stat.birthtime ?? new Date(0)).toISOString();
|
||||
if (birthtime > options.before) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.after) {
|
||||
item_stat = item_stat ?? await Deno.lstat(entry.path);
|
||||
if ((item_stat.birthtime ?? new Date(0)).toISOString() < options.after) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.modified_before) {
|
||||
item_stat = item_stat ?? await Deno.lstat(entry.path);
|
||||
if ((item_stat.mtime ?? new Date(0)).toISOString() > options.modified_before) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.modified_after) {
|
||||
item_stat = item_stat ?? await Deno.lstat(entry.path);
|
||||
if ((item_stat.mtime ?? new Date(0)).toISOString() < options.modified_after) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
let item_id = null;
|
||||
if (options.id_before) {
|
||||
item_id = item_id ?? entry.name.replace(/\.json$/, '');
|
||||
if (item_id >= options.id_before) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.id_after) {
|
||||
item_id = item_id ?? entry.name.replace(/\.json$/, '');
|
||||
if (item_id <= options.id_after) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (counter < offset) {
|
||||
++counter;
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue