mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 13:20:10 +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 :
 |