You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
was wir haben.
|
|
|
|
- verschiedene Model (user, group, mailAccount, mailALias, etc.)
|
|
- diese koennen in verschiedenen Datenquellen liegen
|
|
- die Datenquellen werden mit verschiedenen Abfragesprachen abgefragt.
|
|
- das entsprechende Model bestimmt welche Daten abgefragt werden.
|
|
- die Datenquelle bestimmt wie diese Daten abgefragt werden.
|
|
|
|
Konflikt: bei ldap laesst sich das wie nur schwer von dem was abgefragt
|
|
werden soll trennen.
|
|
|
|
Moegliche Loesung: eine Factory, die ueber die Klasse des Models und
|
|
die Klasse der Datenbank eine solche konkrete Datenbank initialisiert.
|
|
|
|
Variation: anstatt eine factory zu bauen koennte man eine generische
|
|
Datenbankklasse bauen die eine Klassenmethode bekommt ueber die mit
|
|
dem reingegebenen Model dann eine Instanz erzeugt wird.
|
|
|
|
Problem: Die Datenbankklasse muss dann Initialisierungsinformationen
|
|
zu den entsprechenden Models kennen. (Implementierungsdetail)
|
|
Um die Datenbankklasse generisch zu halten sollte diese Information
|
|
woanders her kommen, allerdings nicht aus dem Model, da dann wiederum
|
|
die Model Implementierungsdetails der Datenbankklasse kennen muessen.
|
|
|
|
Evtl.: laesst sich was ueber Name conventions machen. Sauberer scheint
|
|
mir aber zu sein das es zu jeder Datenbankklasse eine Konfigurationsdatei
|
|
gibt in der man die Eckdaten fuer die Abfragen der einzelnen Model
|
|
konfigurieren kann.
|
|
|
|
ein yaml koennte evtl. so aussehen: (ldap.yml)
|
|
|
|
ldap: # => wenn es pro Datenbank ne eigenen datei gibt ist das nicht noetig
|
|
host: host.one.virtual
|
|
port: 389
|
|
queries:
|
|
User:
|
|
baseDn: ou=user,o=system,dc=weird-web-workers,dc=org
|
|
filter: (objectClass=posixAccount)
|
|
Group:
|
|
baseDn: ou=group,o=system,dc=weird-web-workers,dc=org
|
|
filter: (objectClass=posixGroup)
|
|
|
|
...
|
|
|
|
alternativ zu einer Datei koennte man eine Mapping Datei zu jeder Kombination
|
|
aus Model und Datenbanktyp anlegen...diese waeren schoen klein schnell gelesen
|
|
und geschrieben.
|
|
|
|
Dateistruktur:
|
|
|
|
- model - user.rb
|
|
- group.rb
|
|
- site.rb
|
|
- mailalias_role.rb
|
|
- mailalias_person.rb
|
|
- mailaccount.rb
|
|
- data - ldap.rb
|
|
- data - config - ldap.yml
|
|
- adapter - ldap.rb
|
|
- config - ldap - user.yml
|
|
- group.yml
|
|
- site.yml
|
|
- mailalias_role.yml
|
|
- mailalias_person.yml
|
|
- mailaccount.yml
|
|
|