ImageGrid/legacy/ImageGrid.otl
Alex A. Naanou 5f47d6da7b restructured the repo moving the legacy out of the way...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2020-08-28 17:32:02 +03:00

169 lines
3.6 KiB
Plaintext
Executable File

Concepts
basic
key
| a basic global identification mechanism.
| each entity in the system has a key.
|
| NOTE: a good key should be uniquely calculable from an entity.
item
| a basic element in the system.
| an item is represented by a URL
group (item)
| a special item that unifies several items
list
| a representation of several items
tag
| a piece of text connected with an item
action
| a user defined command or script
constructed
state (tag)
| a named state of an item
stack (group)
| a set of versions or states of an item
| a stack behaves like an item
collection/list
| a special list defined manually or with a search that is maintained in the filesystem
tag chain
| a special tag that consists of several tags
event
| a condition that can be bound to an action
workflow
| a named sequence/graph of states and transitions (actions)
structural
URL
index
| contains:
metadata
item data
GID
metadata
GIDs of available local sub-items (thumbs, previews, ...)
GIDs of available remote sub-items (thumbs, previews, ...)
URLs (optional)
| URLs are only local...
store
cache
cache
store
clone/remote (???)
structure
configuration (archive-wide)
general settings
actions
scripts
remote refs
clone settings
index (metadata)
item store (URLs)
local cache (previews)
version info
index directory structure
.ig/
items/
| item store.
| contains refs to original objects.
<item-id>.json
| contains refs to original data (remote)
...
<pack-id>.pack
...
meta/ XXX
| metadata and tag store
| XXX this is not final...
<tag-name>.json
...
cache/
| cache configuration and listings
<cache-id>/
<cache-id>.json
| contains specific cache configuration
| - query
| - generator configuration
| - image resolution
| - ...
| - output dir (default: .ig/cache/<cache-id>)
...
<image-id>.jpg
...
<item-id>.json
| contains refs to specific <cache-id> and location.
| NOTE: a single item may appear in several caches, hence a
| single place to keep the item-specific refs and multiple
| cache dirs.
...
<pack-id>.pack
...
config/ XXX
history/ XXX
| this directory is dependant on what VCS is used.
scripts/ XXX
actions/
<action-name>
...
<script-name>
...
events/ XXX
<event-name>/
<priority>.<action-name>
...
...
<catalogue-name>/
...
requirements
index external data (represented by URLs and groups of URLs)
indexing is done via tags (metadata)
provide generic data operations
search/select
import
copy/move/...
...
provide data-specific operations
import
thumbnails/previews (for images)
...
provide archive-level operations
clone
push/pull
commit
...
provide trivial configurability
data-specific actions
domain-specific archive actions
stored data
| the main idea behind this is to make a git like management system
| suited for a slightly different data, characterised as:
very large umbers of elements/files
continually increasing number of elements
elements rarely change (almost no diffing needed)
metadata is constantly changed
large elements
span more than one storage media
indirect as well as direct element cloning
copy / backup
preview
thumbnail
data is constantly searched or accessed
basic requirements
safe originals
main workflows
import new data
.
| vim:set spell ts=4 sw=4 :