Sync directory structure with firebase ignoring the contents while preserving the heirarchy
I am trying to write a small electron application that syncs the directory structure of a certain folder with Firebase ignoring the actual contents. And struggling to design a strategy with low ovrhead when user renames, deletes or moves the children.
I am going with something like this for the schema
contenst = {
f1 : {
name : 'Folder 1',
type : 'dir',
parent : null
},
f2 : {
name : 'cat.jpg',
type : 'file',
parent : 'f1'
},
f3 : {
name : 'Subfolder a',
type : 'dir',
parent : 'f1'
},
f4 : {
name : 'dog.jpg',
type : 'file',
parent : 'f3'
}
}
This is the above directory structure in simple form.
+-- Folder1
|-- cat.jpg
+-- Subfoler_a
|--dog.jpg
Now on the app startup each time I have to re-sync the directory structure while keeping the bandwidth usage as low as possible.
Of course I could just read the whole directory and overwrite the server one with it but that will be quite expensive if there are thousands of files.
I cant use any file watcher because that wont work if the app is closed.
One solution is to download the server stored snapshot and calculate a diff with the local structure. That again means downloading the whole tree.
Is there any better solution to this.
As evident from the question title I only need to sync the structure. File contents don't matter.
javascript firebase firebase-realtime-database synchronization
add a comment |
I am trying to write a small electron application that syncs the directory structure of a certain folder with Firebase ignoring the actual contents. And struggling to design a strategy with low ovrhead when user renames, deletes or moves the children.
I am going with something like this for the schema
contenst = {
f1 : {
name : 'Folder 1',
type : 'dir',
parent : null
},
f2 : {
name : 'cat.jpg',
type : 'file',
parent : 'f1'
},
f3 : {
name : 'Subfolder a',
type : 'dir',
parent : 'f1'
},
f4 : {
name : 'dog.jpg',
type : 'file',
parent : 'f3'
}
}
This is the above directory structure in simple form.
+-- Folder1
|-- cat.jpg
+-- Subfoler_a
|--dog.jpg
Now on the app startup each time I have to re-sync the directory structure while keeping the bandwidth usage as low as possible.
Of course I could just read the whole directory and overwrite the server one with it but that will be quite expensive if there are thousands of files.
I cant use any file watcher because that wont work if the app is closed.
One solution is to download the server stored snapshot and calculate a diff with the local structure. That again means downloading the whole tree.
Is there any better solution to this.
As evident from the question title I only need to sync the structure. File contents don't matter.
javascript firebase firebase-realtime-database synchronization
add a comment |
I am trying to write a small electron application that syncs the directory structure of a certain folder with Firebase ignoring the actual contents. And struggling to design a strategy with low ovrhead when user renames, deletes or moves the children.
I am going with something like this for the schema
contenst = {
f1 : {
name : 'Folder 1',
type : 'dir',
parent : null
},
f2 : {
name : 'cat.jpg',
type : 'file',
parent : 'f1'
},
f3 : {
name : 'Subfolder a',
type : 'dir',
parent : 'f1'
},
f4 : {
name : 'dog.jpg',
type : 'file',
parent : 'f3'
}
}
This is the above directory structure in simple form.
+-- Folder1
|-- cat.jpg
+-- Subfoler_a
|--dog.jpg
Now on the app startup each time I have to re-sync the directory structure while keeping the bandwidth usage as low as possible.
Of course I could just read the whole directory and overwrite the server one with it but that will be quite expensive if there are thousands of files.
I cant use any file watcher because that wont work if the app is closed.
One solution is to download the server stored snapshot and calculate a diff with the local structure. That again means downloading the whole tree.
Is there any better solution to this.
As evident from the question title I only need to sync the structure. File contents don't matter.
javascript firebase firebase-realtime-database synchronization
I am trying to write a small electron application that syncs the directory structure of a certain folder with Firebase ignoring the actual contents. And struggling to design a strategy with low ovrhead when user renames, deletes or moves the children.
I am going with something like this for the schema
contenst = {
f1 : {
name : 'Folder 1',
type : 'dir',
parent : null
},
f2 : {
name : 'cat.jpg',
type : 'file',
parent : 'f1'
},
f3 : {
name : 'Subfolder a',
type : 'dir',
parent : 'f1'
},
f4 : {
name : 'dog.jpg',
type : 'file',
parent : 'f3'
}
}
This is the above directory structure in simple form.
+-- Folder1
|-- cat.jpg
+-- Subfoler_a
|--dog.jpg
Now on the app startup each time I have to re-sync the directory structure while keeping the bandwidth usage as low as possible.
Of course I could just read the whole directory and overwrite the server one with it but that will be quite expensive if there are thousands of files.
I cant use any file watcher because that wont work if the app is closed.
One solution is to download the server stored snapshot and calculate a diff with the local structure. That again means downloading the whole tree.
Is there any better solution to this.
As evident from the question title I only need to sync the structure. File contents don't matter.
javascript firebase firebase-realtime-database synchronization
javascript firebase firebase-realtime-database synchronization
asked Nov 20 '18 at 12:56
Sayam QaziSayam Qazi
33
33
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53393489%2fsync-directory-structure-with-firebase-ignoring-the-contents-while-preserving-th%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53393489%2fsync-directory-structure-with-firebase-ignoring-the-contents-while-preserving-th%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown