summaryrefslogtreecommitdiff
path: root/docs/architecture/data.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'docs/architecture/data.mdwn')
-rw-r--r--docs/architecture/data.mdwn19
1 files changed, 19 insertions, 0 deletions
diff --git a/docs/architecture/data.mdwn b/docs/architecture/data.mdwn
new file mode 100644
index 0000000..a81a268
--- /dev/null
+++ b/docs/architecture/data.mdwn
@@ -0,0 +1,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-|^ikiwiki-/ 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
+"""]]