Skip to content

Commit

Permalink
refactor: simplify library entry storage handlers
Browse files Browse the repository at this point in the history
  • Loading branch information
becem-gharbi committed May 17, 2023
1 parent 3cebc9e commit 2b14d08
Show file tree
Hide file tree
Showing 12 changed files with 82 additions and 1,064 deletions.
438 changes: 0 additions & 438 deletions .config.nodes.json

This file was deleted.

419 changes: 0 additions & 419 deletions .config.nodes.json.backup

This file was deleted.

20 changes: 0 additions & 20 deletions .config.users.json

This file was deleted.

17 changes: 0 additions & 17 deletions .config.users.json.backup

This file was deleted.

Empty file removed lib/flows/README.md
Empty file.
29 changes: 28 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"typescript": "^5.0.4"
},
"dependencies": {
"@flowforge/node-red-function-gpt": "^0.2.1",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"mongodb": "^5.5.0",
Expand Down
44 changes: 0 additions & 44 deletions src/models/library.ts

This file was deleted.

119 changes: 50 additions & 69 deletions src/storage.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
//@ts-nocheck
import type { StorageModule } from "@node-red/runtime";
import { createStorage, prefixStorage, Storage } from "unstorage";
import Library from "./models/library.js";
import fsDriver from "unstorage/drivers/fs";

var appname: string;

export var appStorage: Storage;
var appStorage: Storage;
var libraryStorage: Storage;

export const storageModule: StorageModule = {
init: () => {
Expand All @@ -17,6 +17,8 @@ export const storageModule: StorageModule = {
});

appStorage = prefixStorage(unstorage, appname);

libraryStorage = prefixStorage(appStorage, "library");
},

getFlows: () => appStorage.getItem("flows").then((flows) => flows || []),
Expand All @@ -26,90 +28,69 @@ export const storageModule: StorageModule = {
getCredentials: () =>
appStorage.getItem("credentials").then((creds) => creds || {}),

saveCredentials: () => appStorage.setItem("credentials", credentials),
saveCredentials: (credentials) =>
appStorage.setItem("credentials", credentials),

getSettings: () =>
appStorage.getItem("settings").then((settings) => settings || {}),

saveSettings: () => appStorage.setItem("settings", settings),
saveSettings: (settings) => appStorage.setItem("settings", settings),

getSessions: () =>
appStorage.getItem("sessions").then((sessions) => sessions || {}),

saveSessions: () => appStorage.setItem("sessions", sessions),

getLibraryEntry: function (type, name) {
console.log("********* getLibraryEntry *********");
saveSessions: (sessions) => appStorage.setItem("sessions", sessions),

getLibraryEntry: async function (type, name) {
if (name == "") {
name = "/";
} else if (name.substr(0, 1) != "/") {
name = "/" + name;
}

return new Promise(function (resolve, reject) {
Library.findOne(
{ appname: appname, type: type, name: name },
function (err, file) {
if (err) {
reject(err);
} else if (file) {
resolve(file.body);
} else {
var reg = new RegExp("^" + name, "");
Library.find(
{ appname: appname, type: type, name: reg },
function (err, fileList) {
if (err) {
reject(err);
} else {
var dirs = [];
var files = [];

for (var i = 0; i < fileList.length; i++) {
var n = fileList[i].name;
n = n.replace(name, "");
if (n.indexOf("/") == -1) {
var f = fileList[i].meta;
f.fn = n;
files.push(f);
} else {
n = n.substr(0, n.indexOf("/"));
dirs.push(n);
}
}
dirs = dirs.concat(files);
resolve(dirs);
}
}
);
}
}
);
});
const library = await libraryStorage.getItem(name);

if (library) {
const parsedLibrary = JSON.parse(library);

return parsedLibrary.body;
}

const libraryKeys = await libraryStorage.getKeys(name);

var dirs = [];
var files = [];

for (var i = 0; i < libraryKeys.length; i++) {
const library = await libraryStorage.getItem(libraryKeys[i]);

const parsedLibrary = JSON.parse(library);

var n = parsedLibrary.name;
n = n.replace(name, "");
if (n.indexOf("/") == -1) {
var f = parsedLibrary.meta;
f.fn = n;
files.push(f);
} else {
n = n.substr(0, n.indexOf("/"));
dirs.push(n);
}
}

dirs = dirs.concat(files);

return dirs;
},

saveLibraryEntry: function (type, name, meta, body) {
console.log("********* saveLibraryEntry *********");

return new Promise(function (resolve, reject) {
var p = name.split("/"); // strip multiple slash
p = p.filter(Boolean);
name = p.slice(0, p.length).join("/");
if (name != "" && name.substr(0, 1) != "/") {
name = "/" + name;
}
Library.findOneAndUpdate(
{ appname: appname, name: name },
{ name: name, meta: meta, body: body, type: type },
function (err, library) {
if (err) {
reject(err);
} else {
resolve();
}
}
);
});
var p = name.split("/"); // strip multiple slash
p = p.filter(Boolean);
name = p.slice(0, p.length).join("/");
if (name != "" && name.substr(0, 1) != "/") {
name = "/" + name;
}

return libraryStorage.setItem(name, { name, meta, body, type });
},
};
1 change: 1 addition & 0 deletions tmp/app0/credentials
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"$":"c3f3fc0cd07bf3764d2d5c14f2efdbf84NqhiiYAqHK7bfamGJ83TsD54PDaY8yvflR4vivvPGOHd2ccWbcCz9U9OQ=="}
56 changes: 1 addition & 55 deletions tmp/app0/flows
Original file line number Diff line number Diff line change
@@ -1,55 +1 @@
[
{
"id": "ca62c5c8d2804cf1",
"type": "tab",
"label": "Flow 1",
"disabled": false,
"info": "",
"env": []
},
{
"id": "2e0dc21189ec9b7c",
"type": "inject",
"z": "ca62c5c8d2804cf1",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 340,
"y": 120,
"wires": [
[
"09c1ee47d041fe6f"
]
]
},
{
"id": "09c1ee47d041fe6f",
"type": "debug",
"z": "ca62c5c8d2804cf1",
"name": "debug 1",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 640,
"y": 100,
"wires": []
}
]
[{"id":"49cf684aba9b5fea","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"7bf94e3d4d29f9cd","type":"inject","z":"49cf684aba9b5fea","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":340,"y":160,"wires":[["7f77d938f70bfd8a","38ce956c0ede275d"]]},{"id":"7f77d938f70bfd8a","type":"debug","z":"49cf684aba9b5fea","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":160,"wires":[]},{"id":"38ce956c0ede275d","type":"sendgrid","z":"49cf684aba9b5fea","from":"qsdgqsfgdsfg","multiple":false,"to":"dsfgdfgsdfgsdfg","name":"","content":"text","templateId":"","templateData":"","x":620,"y":260,"wires":[]}]
2 changes: 1 addition & 1 deletion tmp/app0/settings

Large diffs are not rendered by default.

0 comments on commit 2b14d08

Please sign in to comment.