mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 02:40:08 +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 :
 |