[Dbix-class] DBIx::Class, another data validation approach

Ulrich Kautz uk.lists at fortrabbit.de
Sat Jul 25 15:14:56 GMT 2009


Cj4+Pj4gVGhhdCBzYWlkLCB0aGVyZSdzIGEgZmV3IHRoaW5ncyB0aGF0IEknZCBsaWtlIHRvIHNl
ZSBiZSBkb25lOgo+Pj4+IDEpIFdpdGggb25lIHNldHRpbmcsIEkgc2hvdWxkIGJlIGFibGUgdG8g
dHVybiBvbiB2YWxpZGF0aW9uIGZvcgo+Pj4+IGFsbCBteSBjb2x1bW5zIHRoYXQgaGF2ZSBhIHR5
cGUgc2V0IGZvciB0aGVtLiBTbywgaWYgSSBoYXZlIGEKPj4+PiBjb2x1bW4gdGhhdCBpcyBhbiBp
bnRlZ2VyLCB0aGF0IHNob3VsZCBqdXN0IHR1cm4gb24gZm9yIG1lLgo+Pj4gT2ssIG9uIHdoaWNo
IGxldmVsID8gRm9yIGEgc2luZ2xlIG1vZGVsLCBmb3IgYWxsIG1vZGVscyB3aXRoIAo+Pj4gY29s
dW1ucyBvZiBhIGNlcnRhaW4gdHlwZSBnbG9iYWx5IChzZWUgMykgb3IgYXQgcnVudGltZSAoZWcK
Pj4+IGJlZm9yZSB0aGUgYWN0dWFsIHVwZGF0ZS9jcmVhdGUuLiBzb21ldGhpbmcgbGlrZQo+Pj4g
JG9iamVjdC0+dmFsaWRhdGVzKCAkZGF0YV9yZWYsIHsgZXhjbHVkZV90eXBlcyA9PiBbIHF3LyBp
bnRlZ2VyIC8KPj4+IF0gfSApID8gV2hhdCB1c2UtY2FzZXMgY2FuIHlvdSBpbWFnaW5lIGZvciB0
aGlzIChmb3IgbXkgYmV0dGVyCj4+PiB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZXF1aXJlbWVudHMp
ID8gRm9yIG15IHVzZSwgdGhlIGRlY2lzaW9uCj4+PiB3aGljaCB2YWxpZGF0b3Iocykgb3Igbm9u
ZSBhdCBhbGwgdG8gdXNlIHdhcyBzdWZmaWNpZW50LCBzbyBmYXIsCj4+PiBidXQgdGhhdCBkb2Vz
bnQgbWVhbiBhbnl0aGluZyAuLgo+PiBGcmFua2x5LCBJIGFtIG9mIHRoZSBvcGluaW9uIHRoYXQg
aWYgeW91IGhhdmUgRGF0YVZhbGlkYXRpb24gYXMgb25lCj4+ICBvZiB5b3VyIGNvbXBvbmVudHMs
IGFueSBvZiB5b3VyIGNvbHVtbnMgd2l0aCBhIHR5cGUgc2hvdWxkIGF0Cj4+IGxlYXN0IHZhbGlk
YXRlIGFnYWluc3QgdGhhdCB0eXBlLiBUaGlzIHdvdWxkIHNlcmlvdXNseSBoZWxwIHdpdGgKPj4g
U1FMaXRlIHVzYWdlLgo+PiAKPj4+PiAyKSBJIHNob3VsZCBiZSBhYmxlIHRvIGNoYWluIHZhbGlk
YXRpb25zLiBTbywgc29tZXRoaW5nIGxpa2UgCj4+Pj4gInZhbGlkYXRpb24gPT4gWyAnZm9vJywg
J2JhcicgXSIuIExvb2sgYXQgaG93IE1vb3NlIGRvZXMgdGhpcy4KPj4+IEknbSBub3QgcXVpdGUg
c3VyZSB3aGV0ZXIgdGhpcyBpcyBub3QgYWxyZWFkeSBpbXBsZW1lbnRlZC4gUmlnaHQgCj4+PiBu
b3csIHlvdSBjYW4gcHJvdmlkZSBtdWx0aXBsZSB2YWxpZGF0b3JzIGZvciAKPj4+ICh1cGRhdGV8
dXBkYXRlX2FsbHxjcmVhdGUpX3ZhbGlkYXRlZCBhbmQgdGhlIHZhbGlkYXRlcyBtZXRob2QgCj4+
PiBpdHNlbGYuIFRoZXNlIHdpbGwgYnkgYXBwbGllZCBvbmUgYWZ0ZXIgYW5vdGhlciwgdGh1cyBj
aGFpbmVkLgo+Pj4gRWc6ICRvYmplY3QtPnZhbGlkYXRlcyggJGRhdGFfcmVmLCBxdy8gdmFsaWRh
dG9yMSB2YWxpZGF0b3IyIC8gKTsKPj4+ICBUaGF0J3Mgd2hhdCB5b3UgbWVhbnQsIG9yIGFtIGkg
bWlzc2luZyB0aGUgcG9pbnQgPwo+PiBUaGF0IHdvcmtzLgo+PiAKPj4+PiAzKSBEaWZmZXJlbnQg
REJNU2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLiBTbywgbWF5YmUgCj4+Pj4gcHJvZHVjZXItc3Bl
Y2lmaWMgdmFsaWRhdGlvbnMgd291bGQgYmUgaGVscGZ1bCAocS52LiAjMSkuCj4+PiBTb3VuZHMg
dmVyeSBpbnRlcnN0aW5nLiBJIGNvdWxkIGltYWdpbmUgdmFsaWRhdGlvbi1zZXQtbW9kdWxlcywK
Pj4+IG9uZSBmb3IgZXZlcnkgREJNUywgbGlrZSBEQkl4OjpDbGFzczo6RGF0YVZhbGlkYXRvcjo6
TXlTUUxUeXBlcy4KPj4+IFRoZW4gb25lIHNob3VsZCBiZSBhYmxlIHRvIGVuYWJsZS9kaXNhYmxl
IGEgc3Vic2V0IG9mIHZhbGlkYXRpb24KPj4+IHR5cGVzLi4gZWcgX19QQUNLQUdFX18tPm15c3Fs
X3ZhbGlkYXRpb25fZW5hYmxlKCBxdy8gOmFsbCAvICk7IAo+Pj4gX19QQUNLQUdFX18tPm15c3Fs
X3ZhbGlkYXRpb25fZGlzYWJsZSggcXcvIGRhdGUgZGF0ZXRpbWUgLyApOyBJZiAKPj4+IHlvdSBk
byB0aGlzIGluIHlvdXIgc3VwZXItbW9kZWwgKGZyb20gd2hpY2ggYWxsIGluaGVyaXQpIHRoaXMK
Pj4+IHdvdWxkIGFwcGx5IGdsb2JhbGx5LiBJZiB5b3Ugc3dpdGNoIHRoZSBEQk1TIG5vdywgeW91
IHNpbXBsZSBsb2FkCj4+PiBhbm90aGVyIG1vZHVsZSBsaWtlIERCSXg6OkNsYXNzOjpEYXRhVmFs
aWRhdG9yOjpQb3N0Z3Jlc1R5cGVzIG9yCj4+PiBzbyBhbmQgYWxsIHRoZSBzcGVjaWFsIGNvbHVt
bnMgZm9yIHRoaXMgREJNUyB3aWxsIGJlIHZhbGlkYXRlZC4KPj4gQmFoLiBBdXRvbG9hZCB0aGF0
IGNyYXAgYmFzZWQgb24gdGhlIHN0b3JhZ2VfdHlwZSBJIGFscmVhZHkgdG9sZAo+PiBEQklDIGFi
b3V0IGluIG15IERTTi4gRG9uJ3QgbWFrZSBtZSBoYXJkY29kZSBhbnl0aGluZy4KPj4gCj4+IFJv
Ygo+PiAKPiAKPiBBbHJpZ2h0IHRoZW4sIGknbGwgbG9vayBpbnRvIGl0IGF0IHRoZSB3ZWVrZW5k
LiBUaGUgdmFsaWRhdGlvbiB2aWEKPiBEQk1TIGRldGVybWluaWF0aW9uIGxvb2tzIGxpa2UgYSBn
b29kZSBpZGVhLiBUaGFua3MuCj4gCgpPaywgaSd2ZSB1cGRhdGVkIHRoZSBtb2R1bGVzIGNvbmNl
cm5pbmcgeW91ciBpZGVhcy4gQSBkYi10eXBlIGF3YXJlIHZhbGlkYXRpb24gd291bGQgYmUgYXV0
by1sb2FkZWQgYW5kIGFwcGxpZWQsIGlmIG5vdCBkaXNhYmxlZC4gQnV0LCBhcyBFZGVuIHdyb3Rl
LCB0aGUgREJNUyBzdHVmZiB3aWxsIGJlIGFkZGVkIGluIERCSUMgMC45IGFueXdheSwgc28gaSBr
ZXB0IGl0IG1vc3Qgc2ltcGxpc3RpYyBhbmQgbW9kdWxhciwgdGhhdCBpdCBjYW4gYmUgcmVtb3Zl
ZCBsYXRlciBvbiBhbmQgZG9lc250IG1ha2UgbWUgdG8gd2FzdGUgbXVjaCB0aW1lIG5vdy4KRnVy
dGhlciwgaSdtIG5vdCBzdXJlICJob3cgbXVjaCB2YWxpZGF0aW9uIiB3aWxsIGJlIHBhcnQgb2Yg
MC45IGFuZCBpZiB0aGlzIG1vZHVsZSAoZXZlbiB3aXRob3V0IHRoZSBEQk1TIHN0dWZmKSBpcyBu
b3QgdG90YWxseSBvYnNvbGV0ZSB3aGVuIERCSUMgMC45IHJlbGVhc2VzLiBIb3dldmVyLCBpIG5l
ZWQgdmFsaWRhdGlvbiAoZXNwZWNpYWxseSBmb3IgcHJvZmlsZXMpIHJpZ2h0IG5vdyBhbmQgY2Fu
dCB3YWl0IGZvciB0aGUgcmVsZWFzZS4gQ291bGQnbnQgZmluZCBhbnkgYW55IGRhdGUsIHRob3Vn
aC4KCkkndmUgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiB0byBleHBsYWluIHRoZSBpZGVhcyBh
bmQgcG9zc2liaWxpdGllcyBvZiB0aGlzIG1vZHVsZS4gRm9sbG93aW5nIGkndmUgcGFzdGVkIGFu
IGV4Y2VycHQsIHdoaWNoIHNob3VsZCBleHBsYWluIG1vc3Qgb2YgaXQgYnJpZWZseSBhbmQgZG9l
c250IG1ha2UgbWUgd3JpdGUgaXQgdHdpY2U6CgoqKioqKioqKioqKioqKioqKioqKioqKgpbLi4u
XSBhIHNob3J0IGludHJvZHVjdGlvbiBvZiB0aGUgbXVsdGlwbGUgYXBwcm9hY2hlcyBhbmQgbWV0
aG9kcyB5b3UgY2FuIGZvbGxvdyB0byBhY2hpZXZlIHZhbGlkYXRpb24uCgpNb3N0IG9mIHRoZW0g
Y291bGQgYmUgY29tYmluZWQgYW5kIGFyZSBub3QgImVpdGhlci1vciIuCgoqIFZhbGlkYXRpb24g
cHJvZmlsZXMKICAgVGhlc2UgYXJlIG1lbnQgdG8gYmUgdXNlZCBpbiBtb3N0IGNvbXBsZXggdmFs
aWRhdGlvbiBzY2VuYXJpb3MuIFlvdSBjYW4gdmFsaWRhdGUgdGhlIGRhdGEgd2l0aCBtdWx0aXBs
ZSBwcm9maWxlcyAob25lIGFmdGVyIGFub3RoZXIsIGNoYWluZWQpCiAgIHdpdGggb25lIGNhbGwu
CgoqIElubGluZSBjb2x1bW4gdmFsaWRhdGlvbgogICBEaXJlY3RseSBpbiB0aGUgY29sdW1uIGRl
ZmluaXRpb24gdmlhIGFkZF9jb2x1bW4gdGhleSBhcmUgbW9zdCBzaW1wbGUgYW5kIGZhc3QuIEFs
c28gdGhlIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbnMgaXMgbm90IGFwYXJ0IGZyb20gdGhlIGRl
ZmnigJAKICAgbml0aW9uIG9mIHRoZSB2YWxpZGF0aW9uLgoKICAgVGhleSBhcmUgbGltaXRlZCBi
ZWNhdXNlIHRoZXkgaGF2ZSB0byBmaXQgYWx3YXlzIChlYWNoIHNhdmUpIGFuZCBjYW5ub3QgYmUg
dXNlZCwgYXMgdmFsaWRhdGlvbiBwcm9maWxlcywgb25seSBpbiBjZXJ0YWluIGNpcmN1bXN0YW5j
ZXMuCgogICBZb3UgY2FuIGVhc2lseSB1c2UgdGhlbSBpbiBhZGRpdGlvbiB0byB2YWxpZGF0aW9u
IHByb2ZpbGVzIG9yIGV4Y2x1c2l2ZS4gSW4gdGhlIGZpcnN0IGNhc2UgdGhleeKAmWxsIHJ1biBi
ZWZvcmUgdGhlIHZhbGlkYXRpb24gcHJvZmlsZXMuCgoqIERCTVMgc3BlY2lmaWMgdmFsaWRhdGlv
bgogICBUaGlzIGlzIGEga2luZCBvZiBhdXRvLXZhbGlkYXRpb24gZm9yIGJhc2ljIGRhdGF0eXBl
cyBvZiB5b3VyIGNvbHVtbi4gVGhleSBhcmUgREJNUyBkZXBlbmRlbnQuIFNvIE9yYWNsZSBEQiBt
aWdodCBoYXZlIHNvbWUgdHlwZXMgd2hpY2ggUG9zdOKAkAogICBncmVTUUwgaGFzIG5vdCBhbmQg
dmljZSB2ZXJzYS4gQWxzbyB0aGUgZGF0ZXMgZm9yIFBvc3RncmVTUUwgREJzIGFuZCBmb3IgTXlT
UUwgREJzIGxvb2sgZGlmZmVyZW50LgoKICAgVGhleSBub3JtYWxseSBhcHBseSBwZXIgZGVmYXVs
dCBpZiB5b3UgZG9udCBkZWFjdGl2YXRlIHRoZW0gbWFudWFsbHkgKHNlZSBiZWxvdykuIFRoZXkg
YXJlIG92ZXJ3cml0dGVuIGJ5IHlvdXIgY3VzdG9tIGlubGluZSBjb2x1bW4KICAgdmFsaWRhdGlv
bi4KCiAgIFRoZXkgY2FuIGJlIHVuZGVyc3RhbmQgYXMgYSBraW5kIG9mIGRlZmF1bHQgaW5saW5l
IGNvbHVtbiB2YWxpZGF0aW9uLgoKKiBOYW1lZCB2YWxpZGF0aW9uIG1ldGhvZHMKICAgVGhvc2Ug
Y291bGQgYmUgdXNlZCBlaXRoZXIgaW4gaW5saW5lIGNvbHVtbiB2YWxpZGF0aW9uIG9yIHZhbGlk
YXRpb24gcHJvZmlsZXMgYWxpa2UuICBUaGlzIGlzIHNpbXBseSBhbiBhcHByb2FjaCB0byBvdXRz
b3VyY2Ugb2Z0ZW4gdXNlZCB2YWxp4oCQCiAgIGRhdGlvbiBtZXRob2RzIG9yIHJlZ3VsYXIgZXhw
cmVzc2lvbnMgdG8gcmV1c2UgdGhlbSBpbiBtdWx0aXBsZSBtb2RlbHMgYW5kL29yIGZvciBtdWx0
aXBsZSBjb2x1bW5zLgoKKiBWYWxpZGF0aW9uIGNvbHVtbiBjbGFzc2VzCiAgIEFub3RoZXIgYXBw
cm9hY2ggdG8gcmVkdWNlIGNvZGUgaW4geW91ciBtb2RlbHMgYnkgcHJlLWRlZmluaW5nLiAgVGhp
cyBpbmNsdWRlcyBtb3JlIHRoZW4gdGhlIGJhc2ljIGRhdGF0eXBlcyAoeW91IGNhbiBzYXkgZWFj
aCBpbnRlZ2VyIGNvbHVtbgogICBpcyBhbiBpbnRlZ2VyLWNsYXNzIGNvbHVtbikgYnkgYWxsb3dp
bmcgY3VzdG9tIGFuZCBjb21wbGV4IHZhbGlkYXRpb25zLgoKICAgVGhleSBjYW4gYWxzbyB1c2Vk
IGZvciBub24gdmFsaWRhdGlvbiBwdXJwb3NlcyAoanVzdCBkb250IHVzZSB0aGUgdmFsaWRhdGlv
biBrZXkpLiBOYW1lZCB2YWxpZGF0aW9uIG1ldGhvZHMgYXJlIG9mIGNvdXJzZSB1c2FibGUuCgog
ICBQcm9iYWJseSB5b3Ugc2hvdWxkIGRlZmluZSB0aG9zZSBjbGFzc2VzIGluIGEgc3VwZXIgbW9k
ZWwgZnJvbSB3aGljaCBhbGwgeW91ciBvdGhlciBtb2RlbHMgaW5oZXJpdCB0byBnZXQgdGhlIG1v
c3QgYmVuZWZpdCBvdXQgb2YgaXQuCioqKioqKioqKioqKioqKioqKioqKioqCgpQbGVhc2UgcmVh
ZCB0aGUgUE9EIGluIERCSXg6OkNsYXNzOjpEYXRhVmFsaWRhdG9yIGZvciBtb3JlIGluZm8uLgoK
RGVzcGl0ZSB3aGF0IGkgd3JvdGUgYWJvdmUgYWJvdXQgMC45LCBpIHRoaW5rIGkgY291bGQgcHJv
dmlkZSBEQk1TIHNwZWNpZmljIHZhbGlkYXRpb24gZm9yIE15U1FMIGFuZCBQb3N0Z3JlU1FMIGJl
Zm9yZSBpIHJlbGVhc2UgdGhpcyB0byBDUEFOIChidXQgaW4gc2VwcGFyYXRlIHBhY2thZ2VzLCBk
dWUgdG8gZGVwZW5kZW5jaWVzKSwgYnV0IGZpcnN0IG9mIGFsbCBpIHdvdWxkIGxpa2UgdG8gaGVh
ciB3aGF0IHlvdSBhbGwgdGhpbmsgIGFib3V0IHRoZSB1c2VmdWxsbmVzcyBhdCBhbGwuCgpOaWNl
IHdlZWtlbmQgdG8gZXZlcnlib2R5IQpVbHJpY2gKLS0tLS0tLS0tLS0tLS0gbmV4dCBwYXJ0IC0t
LS0tLS0tLS0tLS0tCkEgbm9uLXRleHQgYXR0YWNobWVudCB3YXMgc2NydWJiZWQuLi4KTmFtZTog
REJJeC1DbGFzcy1EYXRhVmFsaWRhdG9yLTAuMDIudGFyLmd6ClR5cGU6IGFwcGxpY2F0aW9uL3gt
Z3ppcApTaXplOiAyNDI5NyBieXRlcwpEZXNjOiBub3QgYXZhaWxhYmxlClVybCA6IGh0dHA6Ly9s
aXN0cy5zY3N5cy5jby51ay9waXBlcm1haWwvZGJpeC1jbGFzcy9hdHRhY2htZW50cy8yMDA5MDcy
NS81YTJhMDgyMS9EQkl4LUNsYXNzLURhdGFWYWxpZGF0b3ItMC4wMi50YXItMDAwMS5iaW4K


More information about the DBIx-Class mailing list