Skip to content

Commit 91328cb

Browse files
committedMar 2, 2024
feat:add Store schema and modify directory
1 parent 0fbff5f commit 91328cb

File tree

4 files changed

+111
-49
lines changed

4 files changed

+111
-49
lines changed
 
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import {exeOnce} from "#common/utils/store/store-realm.js";
2+
3+
/**
4+
* 根据模式读取对象
5+
* @param mode
6+
* @returns {unknown}
7+
*/
8+
export const getQuestionByMode = (mode) => exeOnce((realm) => {
9+
const all = realm.objects("Question");
10+
const question = all.filtered("mode=$0", mode)?.[0];
11+
return question?.toJSON();
12+
})
13+
/**
14+
* 存对象
15+
* @param mode
16+
* @param question
17+
* @returns {*}
18+
*/
19+
export const setQuestion = (mode, question) => exeOnce((realm) => {
20+
let newQuestion;
21+
realm.write(() => {
22+
realm.delete(realm.objects("Question").filtered("mode=$0", mode));
23+
newQuestion = realm.create("Question", Object.assign(question, {mode}));
24+
});
25+
return newQuestion.toJSON();
26+
});
27+
/**
28+
* 删除某一个模式
29+
* @param mode
30+
*/
31+
export const deleteQuestionByMode = (mode) => exeOnce((realm) => {
32+
realm.write(() => {
33+
const modes = realm.objects("Question").filtered("mode=$0", mode)
34+
realm.delete(modes);
35+
});
36+
});
37+
/**
38+
* 删除全部
39+
*/
40+
export const deleteAllQuestion = () => exeOnce((realm) => {
41+
realm.write(() => {
42+
realm.delete(realm.objects("Question"));
43+
});
44+
});
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import {exeOnce} from "#common/utils/store/store-realm.js";
2+
import {UpdateMode} from "realm";
3+
4+
/**
5+
* 设置一项记录
6+
* @param key
7+
* @param value
8+
* @returns {Promise<void>}
9+
*/
10+
export const setStore = (key,value) => exeOnce((realm) => {
11+
let newStore;
12+
realm.write(() => {
13+
newStore = realm.create("Store", {key,value},UpdateMode.Modified);
14+
});
15+
return newStore.toJSON();
16+
});
17+
/**
18+
* 获取记录值
19+
* @param key
20+
* @returns {Promise<void>}
21+
*/
22+
export const getStore = (key) => exeOnce((realm) => {
23+
const all = realm.objects("Store");
24+
let storeObj = all.filtered("key=$0", key)?.[0]?.toJSON();
25+
return storeObj?.value;
26+
});
27+
/**
28+
* 删除某一项记录
29+
* @param key
30+
* @returns {Promise<void>}
31+
*/
32+
export const deleteStore = (key) => exeOnce((realm) => {
33+
realm.write(() => {
34+
realm.delete(realm.objects("Store").filtered("key=$0", key));
35+
});
36+
});
37+
/**
38+
* 清理全部缓存
39+
* @param mode
40+
* @returns {Promise<void>}
41+
*/
42+
export const clearStore = (mode) => exeOnce((realm) => {
43+
realm.write(() => {
44+
realm.delete(realm.objects("Store"));
45+
});
46+
});

‎common/utils/store/schemas/store.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Realm from "realm";
2+
3+
export class Store extends Realm.Object {
4+
static schema = {
5+
name: "Store",
6+
properties: {
7+
key: "string",
8+
value: "string",
9+
timestamp: {type:"date",default:()=>new Date()}
10+
},
11+
primaryKey: "key"
12+
};
13+
}

‎common/utils/store/store-realm.js

+8-49
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ import Realm from "realm";
22
import {Question} from "#common/utils/store/schemas/question.js";
33
import path from "path";
44
import {rootPath} from "#common/utils/file/getRootPath.js";
5-
const localPath = path.resolve(rootPath,"resources/stores/store.realm")
5+
import {Store} from "#common/utils/store/schemas/store.js";
6+
7+
const localPath = path.resolve(rootPath, "resources/stores/store.realm")
68
/**
79
* 开启
810
* @returns {Promise<Realm>}
911
*/
10-
const open = async ()=>{
11-
const realm =await Realm.open({
12-
schema: [Question],
13-
path:localPath
12+
export const open = async () => {
13+
const realm = await Realm.open({
14+
schema: [Question, Store],
15+
path: localPath
1416
});
1517
return realm;
1618
}
@@ -19,52 +21,9 @@ const open = async ()=>{
1921
* @param callback
2022
* @returns {Promise<void>}
2123
*/
22-
const exeOnce = async (callback)=>{
24+
export const exeOnce = async (callback) => {
2325
const realm = await open();
2426
const res = await callback(realm);
2527
realm.close();
2628
return res;
2729
}
28-
29-
/**
30-
* 读取对象
31-
* @param mode
32-
* @returns {unknown}
33-
*/
34-
export const getQuestionByMode = (mode)=>exeOnce((realm)=>{
35-
const all = realm.objects("Question");
36-
const question = all.filtered("mode=$0",mode)?.[0];
37-
return question?.toJSON();
38-
})
39-
/**
40-
* 存对象
41-
* @param mode
42-
* @param question
43-
* @returns {*}
44-
*/
45-
export const setQuestion = (mode,question)=>exeOnce((realm)=>{
46-
let newQuestion;
47-
realm.write(() => {
48-
realm.delete(realm.objects("Question").filtered("mode=$0",mode));
49-
newQuestion = realm.create("Question", Object.assign(question,{mode}));
50-
});
51-
return newQuestion.toJSON();
52-
});
53-
/**
54-
* 删除某一个模式
55-
* @param mode
56-
*/
57-
export const deleteQuestionByMode = (mode)=>exeOnce((realm)=>{
58-
realm.write(() => {
59-
const modes = realm.objects("Question").filtered("mode=$0",mode)
60-
realm.delete(modes);
61-
});
62-
});
63-
/**
64-
* 删除全部
65-
*/
66-
export const deleteAllQuestion = ()=>exeOnce((realm)=>{
67-
realm.write(() => {
68-
realm.delete(realm.objects("Question"));
69-
});
70-
});

0 commit comments

Comments
 (0)