WebTek::DB
Beschreibung
Stellt die Datenbankverbindung her. Die Verbindungsparameter kommen dabei aus dem db.config. Eine typische Konfiguration sieht so aus:
{
'connect' => 'DBI:mysql:webtek',
'user' => 'webtek',
'pass' => 'webtek',
'charset' => 'utf-8',
'date-format' => '%Y-%m-%d %H:%M:%S',
'timezone' => 'CEST',
'long-read-length' => 1_000_000_000, # optional, default 65K
'cache-prepare' => 1, # optional, default 0
}
es wird empfohlen, als charset immer utf-8 zu verwenden, da WebTek intern sowieso Utf8 Strings verwendet, und sonnst nur eine Konvertierung vorgenommen werden müsste.
NotificationCenter
Die DB registriert sich für die Notifications request-process-end und do-db-rollback. Hier werden dann die Datenbankinstanzen commit oder rollback aufgerufen.
Konstanten
- PING_INTERVAL Dieses Objekt macht alle PING_INTERVAL Sekunden einen Ping zur Datenbank (d.h. überprüft ob die Verbingung noch vorhanden ist). Wenn die Verbindung verloren gegangen ist, wird versucht eine neue Verbindung aufzubauen.
- DB_VENDOR_MYSQL diese Konstante wird bei der Funktion vendor retourniert, wenn die Datenbank Mysql ist.
- DB_VENDOR_POSTGRES wie bei DB_VENDOR_MYSQL, nur ist hier die Datenbank Postgres.
- DB_VENDOR_ORACLE wie bei DB_VENDOR_MYSQL, nur ist hier die Datenbank Oracle.
- DB_VENDOR_UNKNOWN wie bei DB_VENDOR_MYSQL, nur ist hier die Datenbank irgendeine nicht erkannte Datenbank. Man kann dann davon ausgehen, dass WebTek auch nicht wirklich gut funktionieren wird ;)
Exportierte Methoden
- DB liefert ein Datenbank Object für die aktuelle Applikation. Das Datenbank Object wird intern als Sharded Instance (Singleton Pattern) behandelt. Alternativ kann auch der Name des Configfiles mit den Datenbank-verbindungs-parametern angegeben werden. Normalerweise wird einfach die db.config verwendet.
- DB_VENDOR_MYSQL
- DB_VENDOR_POSTGRES
- DB_VENDOR_ORACLE
- DB_VENDOR_UNKNOWN
Methoden
- new erstellt eine Datenbank Verbindung für die aktuelle Applikation. Diese Methode muss eignetlich nie direkt aufgerufen werden, denn sie wird automatisch aufgerufen, wenn das erste mal die DB Methode verwendet wird.
- connect erstellt die DBI (= Perl Datenbank Layer) Connection.
- dbh liefert das DBI Databasehandle Object
- vendor liefert eine der oben definierten Konstannten.
- do_prepare($sql) praepariert ein Datenbankstatement. Wenn cache-prepare auf 1 gesetzt ist, wird versucht ein praeparierte Statement aus einem Cache zu holen (mit der prepare_cached DBI Methode).
- do_action($sql, @args) führt ein Datenbank Statement aus. Als Returnwert wird ein DBI Statementhandle zurückgegeben.
- do_query($sql, @args) führt ein Datenbank Statement aus und returned eine Array- Reference mit hashobjekten für jede Zeile. (siehe Dokumentation in DBI fetchall_arrayref)
- commit macht ein Commit auf die offene Transaktion.
- rollback macht ein Rollback auf die offene Transaktion.
- primary_keys($table) retourniert eine Array- Reference mit allen Primärschlüssen für die Tabelle $table.
- column_info($table) retourniert eine Array- Reference mit Hash- Referencen, die den Aussehen der Tabelle $table beschreiben. z.B.:
[
{
'name' => 'Name der Spalte',
'type' => 'Typ der Spalte: varchar, int, ...',
'length' => 'Länge der Spalte in Bytes',
'nullable' => '1 oder 0',
'default' => 'den Default- Wert der Spalte',
},
{
...
}
...
]
- last_insert_id($table, $column) retourniert die zuletzt (=größte) eingefügte id in die Tabelle $table und Spalte $column.
|