3 KiB
zordfsdb
Simple filesystem based key/value db. Provided as golang lib. Main idea is that user knows structure and gets value from known path. For operations that should search or do more should be used Nodes (golang structure).
Configuration
Init root directory.
Supported command
Commands can be split into value layer when you know the structure and node layer for deaper operations.
value layer commands
- Get - to get value from path
- Save - update or create value. Depends on path. If path directs into not existing parent object - will return false
- Inc - increase abcex value
- Dec - decrease abcex value
- Now - save current datetime
node layer commands
- GetNode - to get node. It can be object, list or value object. Returns false if not exist
- CreatNode - create list (director) to add many same objects (structure should be controlled by user) or single object. Parent Node should exist
- AddObject - add object to given list. Should assign abcex id
- Length - get length of list
- GetRandomNode - get random object from list
- AddTemplate - add template to list to execute commands on AddObject
Node as Object commands
- Node.Get - get object property value
- Node.GetNodes - get object properties
- Node.FixType - checks and sets object/list type
helper commands
- Del - delete value, object or list by given path
- Keys - return possible keys for object or ids for list
- ExecuteCommands - execute commands separated by semicolon. See Commands section
dictionary
- object - directory of key/value
- list - directory of objects named by abcex as key
- path - path to key or object or list
Commands
DB can run one or many commands separated by semicolon. Same commands are used in template to add new list object.
- KEYS [path] - get list of existing properties/objects/lists
- GET [path] - get value of property
- INC [path] - increase abcex value in property
- DEC [path] - decrease abcex value in property
- NOW [path] - set value to datetime string in property
- DEL [path] - remove property/object/list (no confirmation)
- SAVE [path] [value] - set value to property
- CREATE [path] - create list/object in path (parent path should exist)
- ADD [path] - add abcex indexed object to list. Will return index
- TEMPLATE [path] [template] - set template to list for object creation
- INFO [path] - get all info about property/object/list
- TREE [path] - draw db part in path with values
- HELP - will print this help
- QUIT - exit the shell
Last used path can be accessed by _
Last returned index (after ADD command) can be accessed by $
Short commands can be as:
KEYS(\K), GET(\G), INC(\I), DEC(\D), NOW(\N), DEL(\R), SAVE(\S), CREATE(\C), ADD(\A), HELP(\H), QUIT(\Q)
Template
If template is set it is used on AddObject method to execute commands on newly added object. Sintax is same as commands. Example:
NOW _.$.created; SAVE _.$.auto 1;
DEV
Run tests: $ go test