functional-models-orm-json 3.0.0 → 3.0.1
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/datastoreAdapter.d.ts +2 -1
- package/datastoreAdapter.js +79 -39
- package/datastoreAdapter.js.map +1 -1
- package/package.json +1 -1
package/datastoreAdapter.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ type Props = {
|
|
|
6
6
|
filePath: string;
|
|
7
7
|
getCollectionNameForModel?: <T extends DataDescription>(model: ModelType<T>) => string;
|
|
8
8
|
fs?: any;
|
|
9
|
+
directoryMode?: boolean;
|
|
9
10
|
};
|
|
10
|
-
declare const create: ({ filePath, getCollectionNameForModel, fs, }: Props) => WithRequired<DatastoreAdapter, "bulkInsert" | "count" | "bulkDelete">;
|
|
11
|
+
declare const create: ({ filePath, getCollectionNameForModel, fs, directoryMode, }: Props) => WithRequired<DatastoreAdapter, "bulkInsert" | "count" | "bulkDelete">;
|
|
11
12
|
export { create };
|
package/datastoreAdapter.js
CHANGED
|
@@ -15,87 +15,127 @@ const node_fs_1 = require("node:fs");
|
|
|
15
15
|
const path_1 = require("path");
|
|
16
16
|
const lib_1 = require("./lib");
|
|
17
17
|
const loadDatabaseFromFile = (fs, filePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
catch (error) {
|
|
23
|
-
/* istanbul ignore next */
|
|
24
|
-
// eslint-disable-next-line functional/no-conditional-statements
|
|
18
|
+
return fs
|
|
19
|
+
.readFile(filePath, 'utf-8')
|
|
20
|
+
.then((data) => JSON.parse(data))
|
|
21
|
+
.catch((error) => {
|
|
25
22
|
if (error.code === 'ENOENT') {
|
|
26
23
|
return {};
|
|
27
24
|
}
|
|
28
25
|
throw error;
|
|
29
|
-
}
|
|
26
|
+
});
|
|
30
27
|
});
|
|
31
28
|
const saveDatabaseToFile = (fs, filePath, database) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
29
|
const dir = (0, path_1.dirname)(filePath);
|
|
33
30
|
yield fs.mkdir(dir, { recursive: true });
|
|
34
31
|
yield fs.writeFile(filePath, JSON.stringify(database, null, 2), 'utf-8');
|
|
35
32
|
});
|
|
33
|
+
const loadCollectionFromDirectory = (fs, dirPath, collectionName) => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
+
const fullPath = (0, path_1.join)(dirPath, `${collectionName}.json`);
|
|
35
|
+
return fs
|
|
36
|
+
.readFile(fullPath, 'utf-8')
|
|
37
|
+
.then((data) => JSON.parse(data))
|
|
38
|
+
.catch((error) => {
|
|
39
|
+
if (error.code === 'ENOENT') {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
throw error;
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
const saveCollectionToDirectory = (fs, dirPath, collectionName, collectionData) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
yield fs.mkdir(dirPath, { recursive: true });
|
|
47
|
+
const fullPath = (0, path_1.join)(dirPath, `${collectionName}.json`);
|
|
48
|
+
yield fs.writeFile(fullPath, JSON.stringify(collectionData, null, 2), 'utf-8');
|
|
49
|
+
});
|
|
36
50
|
/* istanbul ignore next */
|
|
37
|
-
const create = ({ filePath, getCollectionNameForModel = lib_1.getCollectionNameForModel, fs = node_fs_1.promises, }) => {
|
|
51
|
+
const create = ({ filePath, getCollectionNameForModel = lib_1.getCollectionNameForModel, fs = node_fs_1.promises, directoryMode = false, }) => {
|
|
38
52
|
let memoryAdapter = null;
|
|
39
|
-
const
|
|
40
|
-
|
|
53
|
+
const memoryAdapters = {};
|
|
54
|
+
const ensureInitialized = (model) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
if (!directoryMode) {
|
|
56
|
+
if (memoryAdapter) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const fileData = yield loadDatabaseFromFile(fs, filePath);
|
|
60
|
+
memoryAdapter = functional_models_orm_memory_1.datastoreAdapter.create({
|
|
61
|
+
seedData: fileData,
|
|
62
|
+
getCollectionNameForModel,
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const collectionName = getCollectionNameForModel(model);
|
|
67
|
+
if (memoryAdapters[collectionName]) {
|
|
41
68
|
return;
|
|
42
69
|
}
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
seedData:
|
|
70
|
+
const collectionData = yield loadCollectionFromDirectory(fs, filePath, collectionName);
|
|
71
|
+
memoryAdapters[collectionName] = functional_models_orm_memory_1.datastoreAdapter.create({
|
|
72
|
+
seedData: collectionData,
|
|
46
73
|
getCollectionNameForModel,
|
|
47
74
|
});
|
|
48
75
|
});
|
|
49
|
-
const getMemoryAdapter = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
yield ensureInitialized();
|
|
51
|
-
if (!
|
|
52
|
-
|
|
53
|
-
throw new Error('Memory adapter not initialized');
|
|
76
|
+
const getMemoryAdapter = (model) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
yield ensureInitialized(model);
|
|
78
|
+
if (!directoryMode) {
|
|
79
|
+
return memoryAdapter;
|
|
54
80
|
}
|
|
55
|
-
|
|
81
|
+
const collectionName = getCollectionNameForModel(model);
|
|
82
|
+
return memoryAdapters[collectionName];
|
|
56
83
|
});
|
|
57
|
-
const persistToFile = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
-
|
|
84
|
+
const persistToFile = (model) => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
if (!directoryMode) {
|
|
86
|
+
if (!memoryAdapter) {
|
|
87
|
+
/* istanbul ignore next */
|
|
88
|
+
throw new Error('Memory adapter not initialized');
|
|
89
|
+
}
|
|
90
|
+
const database = memoryAdapter.getRecords();
|
|
91
|
+
yield saveDatabaseToFile(fs, filePath, database);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const adapter = yield getMemoryAdapter(model);
|
|
95
|
+
const database = adapter.getRecords();
|
|
96
|
+
const collectionName = getCollectionNameForModel(model);
|
|
97
|
+
yield saveCollectionToDirectory(fs, filePath, collectionName, database);
|
|
59
98
|
});
|
|
60
99
|
return {
|
|
61
100
|
save: (instance) => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
-
const
|
|
101
|
+
const model = instance.getModel();
|
|
102
|
+
const adapter = yield getMemoryAdapter(model);
|
|
63
103
|
const result = yield adapter.save(instance);
|
|
64
|
-
yield persistToFile();
|
|
104
|
+
yield persistToFile(model);
|
|
65
105
|
return result;
|
|
66
106
|
}),
|
|
67
107
|
delete: (model, id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
-
yield ensureInitialized();
|
|
69
|
-
const adapter = yield getMemoryAdapter();
|
|
108
|
+
yield ensureInitialized(model);
|
|
109
|
+
const adapter = yield getMemoryAdapter(model);
|
|
70
110
|
yield adapter.delete(model, id);
|
|
71
|
-
yield persistToFile();
|
|
111
|
+
yield persistToFile(model);
|
|
72
112
|
}),
|
|
73
113
|
retrieve: (model, primaryKey) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
yield ensureInitialized();
|
|
75
|
-
const adapter = yield getMemoryAdapter();
|
|
114
|
+
yield ensureInitialized(model);
|
|
115
|
+
const adapter = yield getMemoryAdapter(model);
|
|
76
116
|
return adapter.retrieve(model, primaryKey);
|
|
77
117
|
}),
|
|
78
118
|
search: (model, query) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
-
yield ensureInitialized();
|
|
80
|
-
const adapter = yield getMemoryAdapter();
|
|
119
|
+
yield ensureInitialized(model);
|
|
120
|
+
const adapter = yield getMemoryAdapter(model);
|
|
81
121
|
return adapter.search(model, query);
|
|
82
122
|
}),
|
|
83
123
|
count: (model) => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
-
yield ensureInitialized();
|
|
85
|
-
const adapter = yield getMemoryAdapter();
|
|
124
|
+
yield ensureInitialized(model);
|
|
125
|
+
const adapter = yield getMemoryAdapter(model);
|
|
86
126
|
return adapter.count(model);
|
|
87
127
|
}),
|
|
88
128
|
bulkInsert: (model, instances) => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
-
yield ensureInitialized();
|
|
90
|
-
const adapter = yield getMemoryAdapter();
|
|
129
|
+
yield ensureInitialized(model);
|
|
130
|
+
const adapter = yield getMemoryAdapter(model);
|
|
91
131
|
yield adapter.bulkInsert(model, instances);
|
|
92
|
-
yield persistToFile();
|
|
132
|
+
yield persistToFile(model);
|
|
93
133
|
}),
|
|
94
134
|
bulkDelete: (model, ids) => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
-
yield ensureInitialized();
|
|
96
|
-
const adapter = yield getMemoryAdapter();
|
|
135
|
+
yield ensureInitialized(model);
|
|
136
|
+
const adapter = yield getMemoryAdapter(model);
|
|
97
137
|
yield adapter.bulkDelete(model, ids);
|
|
98
|
-
yield persistToFile();
|
|
138
|
+
yield persistToFile(model);
|
|
99
139
|
}),
|
|
100
140
|
};
|
|
101
141
|
};
|
package/datastoreAdapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datastoreAdapter.js","sourceRoot":"","sources":["../src/datastoreAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAYA,+EAAyF;AACzF,qCAA4C;AAC5C,+
|
|
1
|
+
{"version":3,"file":"datastoreAdapter.js","sourceRoot":"","sources":["../src/datastoreAdapter.ts"],"names":[],"mappings":"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"}
|