mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-28 09:50:09 +00:00
169 lines
3.6 KiB
Plaintext
Executable File
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 :
|