summaryrefslogtreecommitdiff
path: root/docs/architecture/data.mdwn
blob: c86ec15f2c04e1cf526f6cccdda8a54cd56d8360 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Data model!

Dynamic data lookup should opportunisticly cache any associated cheap data. For instance, there are three data from stat(/srv/git/$reponame.git), so looking up one should grab the others. Jules points out that everything here is inherently cached, and I should be using getpw*() for passwd parsing.

[[!table format=dsv delimiter=# data="""
datum		#stored location			#constraint
username	#usually $ENV{SUDO_USER}		#    !~ /^git-|^iki-/ and =~ /^[a-zA-Z0-9_.][a-zA-Z0-9_.-]+$/
uid		#/etc/passwd				#    None
email		#/etc/passwd GECOS			#Email::Valid::Loose->new("-fqdn" => 1, "-fudge" => 0, "-local_rules" => 0, "-mxcheck" => 1, "-tldcheck" => 0 );
repoaccess	#/etc/group git-$reponame entry		#    None
reponame	#/srv/git/$reponame.git			#    =~ /^[a-z0-9][a-z0-9.-]+$/
repodescription	#/srv/git/$reponame.git/description	#    =~ /^[\x{0020}-\x{FDCF}\x{FDF0}-\x{FFFD}]{1,80}$/
repoowner		#stat /srv/git/$reponame.git/objects uid; might be better as first non-ikiwiki user in /etc/group git-$reponame entry	#    None
repoglobalwritable	#stat /srv/git/$reponame.git/objects o+w bit	#    None
repoglobalreadable	#stat /srv/git/$reponame.git/objects o+r bit	#    None
repoikiwikidisable	#probably in /srv/git/$reponame.git/config	#    None
repointernaltemplates	#probably in /srv/git/$reponame.git/config	#    None
repospecialdomain	#probably in /srv/git/$reponame.git/config	#    None
"""]]