Git Product home page Git Product logo

bufs's Introduction

Bufs

The current core classes give the ability to synchronize a file system to the backend repository (a couch database) in such a way that tagging (called categories) is allowed.  These categories aren't your run of the mill tags, they can also be used to categorize categories as well as content (i.e., you can tag the tags).  This allows you to organize data organically.

Future developments will be to provide a web interface, and also a file system "view" where the directory structure mirrors the category organization.

Topics to cover in more detail
Node Synchonization
  - Can synchronize but must be unique Class-Namespace combination
Abstract Node Format 
  - namespace

bufs's People

Contributors

forforf avatar

Stargazers

 avatar

Watchers

 avatar  avatar

bufs's Issues

Reconcile attached files methodology

Currently attached files are tracked at the node level. However, it would make more sense for FileMgr's to track the list of attached files and update the node when changes occur.
So rather than the Node adding to the list when file attachments are added, the FileMgr would add the file, and update the Node with the current list of files (similar for delete)

Database Corruption

Need a way to deal with database corruption. The test suites will break, but a deleting the test database fixes everything (the test db is automatically recreated).

The database record is tied to the database name, this is problematci

The database record id is based on the database name (originally for ease of troubleshooting). However, I think this has been baked into a full dependency, which makes replicating problematic, as the old records don't work under the new database name (they do work when copied back to the original db name.

Node Operations should persist

Node operations should persist (maybe treat as nodal data as well?) and the persisted operations checked at run time.

Fix the the Class name <=> Persitence Layer naming convention dependency

Currently the name of the class (which forms the base of the uniq user ids) is also used in the naming in the persistence layers. This makes it very difficult to do any refactoring that changes the base name. One idea would be to store old name(s), and when a record with the old name is encountered (probably in the rescue part of a begin block), upgrade the class name in the persistence layer. Another idea would be too create a manual tool to iterate through the persistence layers to rename them. Another idea would be to build an abstracted relationship between the class name and the persistence layer ids. This would have to be stored in the persistence layer as well. Or, just never change the class names.

Dealing with invalid characters in the persistence layer (especially filesystem)

Currently with filesystem, the user primary key (model key) data is used for naming the file directory. Better long term approach is to use a persistence layer key that takes the model key data and creates a filesystem safe name that is mappable back to the original.
So lets say I have a node with a key value of "my::strange::node", that would be saved in the file called "my__strange__node" with "my__strange__node" being the persistence layer primary key. Need to come up with a way to differentiate "my::strange::node" and "my//strange//node" with different persistent layer keys (maybe an iterator at the end for duplicates? "my__strange__node" and "my__strange__node1"?).
Regardless, I'm willing to sacrifice some corner cases of strange character usage to keep things simple and readable.

Be consistent on what to do when all file attachmetns are deleted

Does the file container get deleted when all files are gone? Or is kept around empty?
Right now, there is different behavior between Node.file_subtract(all_files) and Node.file_subtract(:all). The first would leave the container, the latter would delete the container.

Restructure BufsBaseNode environmental settings

BufsBaseNode is now structured to accept the Glue Env name as a parameter, however, many specs have the older format where the glue env name is part of the environmental parameters. This issue is cosmetic only, but it would clarify the constructor interfaces and roles of the factory vs the base class.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.