dancer und dbix::class
DESCRIPTION
DBIx::Class ist mit Sicherheit einer der größten Schätze von "Modern Perl" und bietet schnelle und komfortable Datenbankabfragen. Ebenso erleichtert Dancer das Erstellen von Webanwendungen mit einer leicht verständlichen Programmierung. Wie können beide zusammen genutzt werden? Zunächst mit dem DBIC Plugin für Dancer. Mit diesem können mehrere DBIx::Class Schemas innerhalb der Dancer-Anwendung verwenden werden. Um auch die Dancer-Sessions in der Datenbank zu speichern, habe ich eine Engine für Dancer und DBIC geschrieben. Außerdem werde ich ein Projekt vorstellen, mit dem man einfach den Inhalt von Datenbanken mittels eines DBIx::Class Schemas editieren kann.TRANSCRIPT
![Page 1: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/1.jpg)
Dancer und DBIx::Class
Stefan Hornburg (Racke)[email protected]
16. Deutscher Perl-Workshop, Hannover, 27. März 2013
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 1
/ 41
![Page 2: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/2.jpg)
CGI.pm must die ...
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 2
/ 41
![Page 3: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/3.jpg)
... and we bury DBI alive!
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 3
/ 41
![Page 4: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/4.jpg)
Dancer und DBIx::Class
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 4
/ 41
![Page 5: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/5.jpg)
Anwendungen
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 5
/ 41
![Page 6: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/6.jpg)
eCommerce Software
Magento
Interchange6
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 6
/ 41
![Page 7: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/7.jpg)
Datenbankadministration
phpmyadmin
phppgadmin
TableEditor
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 7
/ 41
![Page 8: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/8.jpg)
TableEditor Features
Unterstützung mehrerer DatenbanksystemeMySQL, PostgreSQL, ...
höherer Abstraktionslevel
modernes Frontend
wenig Quellcode
“einfache” Installation
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 8
/ 41
![Page 9: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/9.jpg)
Eingabe Datenbankparameter
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 9
/ 41
![Page 10: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/10.jpg)
Ansicht Produkte
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 10
/ 41
![Page 11: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/11.jpg)
Ansicht Produkt
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 11
/ 41
![Page 12: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/12.jpg)
Beziehung Orderline
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 12
/ 41
![Page 13: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/13.jpg)
Übersicht Dancer::Plugin::DBIC
Anwendung
Konfiguration
UTF-8
Schema erzeugen
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 13
/ 41
![Page 14: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/14.jpg)
DBIx::Class ohne Dancer Plugin
use In terchange6 : : Schema ;
$schema = Interchange6 : : Schema−>connect ( . . . ) ;
$schema−>r e s u l t s e t ( ’ User ’ )−>search ( { . . } ) ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 14
/ 41
![Page 15: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/15.jpg)
DBIx::Class mit Dancer Plugin
use Dancer : : P lug in : : DBIC ;
schema−>r e s u l t s e t ( ’ User ’ )−>search ( { . . } ) ;
r e s u l t s e t ( ’ User ’ )−>search ( { . . } ) ;
r s e t ( ’ User ’ )−>search ( { . . } ) ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 15
/ 41
![Page 16: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/16.jpg)
Konfiguration
p lug ins :DBIC :
d e f a u l t :dsn : db i : mysql : in terchange6user : rackepass : nevai rbeschema_class : Interchange6 : : Schema
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 16
/ 41
![Page 17: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/17.jpg)
Mehrere Schemas
p lug ins :DBIC :
d e f a u l t :dsn : db i : mysql : in terchange6user : rackepass : nevai rbeschema_class : Interchange6 : : Schema
legacy :dsn : db i : mysql : in terchange5user : rackepass : nevai rbeschema_class : Interchange5 : : Schema
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 17
/ 41
![Page 18: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/18.jpg)
Mehrere Schemas
use Dancer : : P lug in : : DBIC ;
schema ( ’ legacy ’ )−> r e s u l t s e t ( ’ UserDb ’ )−>search ( { . . } ) ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 18
/ 41
![Page 19: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/19.jpg)
UTF-8 für MySQL
p lug ins :DBIC :
d e f a u l t :dsn : db i : mysql : in terchange6user : rackepass : nevai rbeschema_class : Interchange6 : : Schemaopt ions :
mysql_enable_utf8 : 1
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 19
/ 41
![Page 20: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/20.jpg)
Schema dynamisch erzeugen
schema_class fehlt in Konfiguration
DBIx::Class::Schema::Loader
Test und Entwicklung
TableEditor
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 20
/ 41
![Page 21: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/21.jpg)
Übersicht Dancer::Session::DBIC
Engines
Konfiguration
Serialisierung
Sitzungsablauf
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 21
/ 41
![Page 22: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/22.jpg)
Engines
TemplatesTT, Xslate, Flute, ...
Sitzungen (Sessions)Storable, Database, DBIC
LoggerFile, Syslog
SerialisiererJSON, YAML, XML
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 22
/ 41
![Page 23: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/23.jpg)
Konfiguration
session Name der Sessionengine, hier DBIC
session_options Optionen
session_expires Ablaufzeit der Session
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 23
/ 41
![Page 24: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/24.jpg)
Konfiguration
session : "DBIC"sess ion_opt ions :
dsn : db i : mysql : in terchange6user : rackepass : nevai rbeschema_class : Interchange6 : : Schemar e s u l t s e t : Sessionid_column : sess ions_ iddata_column : session_data
sess ion_exp i res : 12 hours
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 24
/ 41
![Page 25: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/25.jpg)
Konfiguration
set session => ’DBIC ’ ;se t sess ion_opt ions => { schema => schema } ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 25
/ 41
![Page 26: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/26.jpg)
Beispieltabelle
CREATE TABLE ‘ sessions ‘ (‘ sessions_id ‘ varchar (255) NOT NULL,‘ session_data ‘ t e x t NOT NULL,‘ created ‘ datet ime NOT NULL,‘ l as t_mod i f i ed ‘ datet ime NOT NULL,
PRIMARY KEY ( ‘ sessions_id ‘ )) ENGINE=InnoDB ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 26
/ 41
![Page 27: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/27.jpg)
Serialisierer
set ’ sess ion_opt ions ’ => {schema => schema ,s e r i a l i z e r => sub { YAML : : Dump(@_) ; } ,d e s e r i a l i z e r => sub { YAML : : Load (@_) ; } ,
} ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 27
/ 41
![Page 28: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/28.jpg)
Sitzungsablauf
alte Sitzungen aus Datenbank löschen
Interchange6::Schema::Resultset::Session
$schema−>r e s u l t s e t ( ’ Session ’ )−>exp i re ( ’ 12 hours ’ ) ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 28
/ 41
![Page 29: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/29.jpg)
Übersicht TableEditor
Installation
Frontend
Anmeldung
Beziehungen
Einschränkungen
Konfiguration
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 29
/ 41
![Page 30: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/30.jpg)
Installation
g i t c lone h t t ps : / / g i thub . com/ in terchange / Tab leEd i to rcd Tab leEd i to rcpanm .. / b in / app . p l
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 30
/ 41
![Page 31: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/31.jpg)
Treiber
DBD::mysql
DBD::Pg
...
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 31
/ 41
![Page 32: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/32.jpg)
Frontend
AngularRoutes für das FrontendXHR-Abfragen an REST APIJSON
Bootstrap
Theme
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 32
/ 41
![Page 33: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/33.jpg)
Routes
get ’ / : c lass / : i d ’ => r e q u i r e _ l o g i n sub {# r e t r i e v e database record and add r e l a t i o n s h i p s. . .
return to_ json ( $data , { allow_unknown => 1 } ) ;} ;
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 33
/ 41
![Page 34: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/34.jpg)
Anmeldung
Dancer::Plugin::Auth::ExtensibleProvider
UnixDBIC
Datenbank (geplant)
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 34
/ 41
![Page 35: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/35.jpg)
Beziehungen
might_have
has_many
belongs_to
many_to_many
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 35
/ 41
![Page 36: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/36.jpg)
Einschränkungen
Primärschlüssel für eine Spalte
Geschwindigkeit (komplexe Schemas)
Fehlerbehandlung
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 36
/ 41
![Page 37: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/37.jpg)
Konfiguration
Auth::Extensible
DBIC
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 37
/ 41
![Page 38: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/38.jpg)
Weitere Features
Suche (Solr)
Auswahl Schema
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 38
/ 41
![Page 39: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/39.jpg)
Entwicklung
https://github.com/interchange/TableEditor
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 39
/ 41
![Page 40: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/40.jpg)
Dancer2
Plugin::DBIC https://metacpan.org/pod/Dancer2::Plugin::DBIC
Session::DBIC noch nicht portiert
TableEditor noch nicht portiert
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 40
/ 41
![Page 41: Dancer und DBIx::Class](https://reader033.vdocument.in/reader033/viewer/2022052411/55795957d8b42ab6648b4cbe/html5/thumbnails/41.jpg)
Slides
Slides: http://www.linuxia.de/talks/pws2014/dancer-dbic-de-beamer.pdf
racke Dancer und DBIx::Class16. Deutscher Perl-Workshop, Hannover, 27. März 2013 41
/ 41