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

fREW Schmidt frioux at gmail.com
Sat Jul 25 17:42:16 GMT 2009


T24gU2F0LCBKdWwgMjUsIDIwMDkgYXQgMTA6MTQgQU0sIFVscmljaCBLYXV0eiA8dWsubGlzdHNA
Zm9ydHJhYmJpdC5kZT53cm90ZToKCj4KPiA+Pj4+IFRoYXQgc2FpZCwgdGhlcmUncyBhIGZldyB0
aGluZ3MgdGhhdCBJJ2QgbGlrZSB0byBzZWUgYmUgZG9uZToKPiA+Pj4+IDEpIFdpdGggb25lIHNl
dHRpbmcsIEkgc2hvdWxkIGJlIGFibGUgdG8gdHVybiBvbiB2YWxpZGF0aW9uIGZvcgo+ID4+Pj4g
YWxsIG15IGNvbHVtbnMgdGhhdCBoYXZlIGEgdHlwZSBzZXQgZm9yIHRoZW0uIFNvLCBpZiBJIGhh
dmUgYQo+ID4+Pj4gY29sdW1uIHRoYXQgaXMgYW4gaW50ZWdlciwgdGhhdCBzaG91bGQganVzdCB0
dXJuIG9uIGZvciBtZS4KPiA+Pj4gT2ssIG9uIHdoaWNoIGxldmVsID8gRm9yIGEgc2luZ2xlIG1v
ZGVsLCBmb3IgYWxsIG1vZGVscyB3aXRoCj4gPj4+IGNvbHVtbnMgb2YgYSBjZXJ0YWluIHR5cGUg
Z2xvYmFseSAoc2VlIDMpIG9yIGF0IHJ1bnRpbWUgKGVnCj4gPj4+IGJlZm9yZSB0aGUgYWN0dWFs
IHVwZGF0ZS9jcmVhdGUuLiBzb21ldGhpbmcgbGlrZQo+ID4+PiAkb2JqZWN0LT52YWxpZGF0ZXMo
ICRkYXRhX3JlZiwgeyBleGNsdWRlX3R5cGVzID0+IFsgcXcvIGludGVnZXIgLwo+ID4+PiBdIH0g
KSA/IFdoYXQgdXNlLWNhc2VzIGNhbiB5b3UgaW1hZ2luZSBmb3IgdGhpcyAoZm9yIG15IGJldHRl
cgo+ID4+PiB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZXF1aXJlbWVudHMpID8gRm9yIG15IHVzZSwg
dGhlIGRlY2lzaW9uCj4gPj4+IHdoaWNoIHZhbGlkYXRvcihzKSBvciBub25lIGF0IGFsbCB0byB1
c2Ugd2FzIHN1ZmZpY2llbnQsIHNvIGZhciwKPiA+Pj4gYnV0IHRoYXQgZG9lc250IG1lYW4gYW55
dGhpbmcgLi4KPiA+PiBGcmFua2x5LCBJIGFtIG9mIHRoZSBvcGluaW9uIHRoYXQgaWYgeW91IGhh
dmUgRGF0YVZhbGlkYXRpb24gYXMgb25lCj4gPj4gIG9mIHlvdXIgY29tcG9uZW50cywgYW55IG9m
IHlvdXIgY29sdW1ucyB3aXRoIGEgdHlwZSBzaG91bGQgYXQKPiA+PiBsZWFzdCB2YWxpZGF0ZSBh
Z2FpbnN0IHRoYXQgdHlwZS4gVGhpcyB3b3VsZCBzZXJpb3VzbHkgaGVscCB3aXRoCj4gPj4gU1FM
aXRlIHVzYWdlLgo+ID4+Cj4gPj4+PiAyKSBJIHNob3VsZCBiZSBhYmxlIHRvIGNoYWluIHZhbGlk
YXRpb25zLiBTbywgc29tZXRoaW5nIGxpa2UKPiA+Pj4+ICJ2YWxpZGF0aW9uID0+IFsgJ2Zvbycs
ICdiYXInIF0iLiBMb29rIGF0IGhvdyBNb29zZSBkb2VzIHRoaXMuCj4gPj4+IEknbSBub3QgcXVp
dGUgc3VyZSB3aGV0ZXIgdGhpcyBpcyBub3QgYWxyZWFkeSBpbXBsZW1lbnRlZC4gUmlnaHQKPiA+
Pj4gbm93LCB5b3UgY2FuIHByb3ZpZGUgbXVsdGlwbGUgdmFsaWRhdG9ycyBmb3IKPiA+Pj4gKHVw
ZGF0ZXx1cGRhdGVfYWxsfGNyZWF0ZSlfdmFsaWRhdGVkIGFuZCB0aGUgdmFsaWRhdGVzIG1ldGhv
ZAo+ID4+PiBpdHNlbGYuIFRoZXNlIHdpbGwgYnkgYXBwbGllZCBvbmUgYWZ0ZXIgYW5vdGhlciwg
dGh1cyBjaGFpbmVkLgo+ID4+PiBFZzogJG9iamVjdC0+dmFsaWRhdGVzKCAkZGF0YV9yZWYsIHF3
LyB2YWxpZGF0b3IxIHZhbGlkYXRvcjIgLyApOwo+ID4+PiAgVGhhdCdzIHdoYXQgeW91IG1lYW50
LCBvciBhbSBpIG1pc3NpbmcgdGhlIHBvaW50ID8KPiA+PiBUaGF0IHdvcmtzLgo+ID4+Cj4gPj4+
PiAzKSBEaWZmZXJlbnQgREJNU2VzIGhhdmUgZGlmZmVyZW50IHR5cGVzLiBTbywgbWF5YmUKPiA+
Pj4+IHByb2R1Y2VyLXNwZWNpZmljIHZhbGlkYXRpb25zIHdvdWxkIGJlIGhlbHBmdWwgKHEudi4g
IzEpLgo+ID4+PiBTb3VuZHMgdmVyeSBpbnRlcnN0aW5nLiBJIGNvdWxkIGltYWdpbmUgdmFsaWRh
dGlvbi1zZXQtbW9kdWxlcywKPiA+Pj4gb25lIGZvciBldmVyeSBEQk1TLCBsaWtlIERCSXg6OkNs
YXNzOjpEYXRhVmFsaWRhdG9yOjpNeVNRTFR5cGVzLgo+ID4+PiBUaGVuIG9uZSBzaG91bGQgYmUg
YWJsZSB0byBlbmFibGUvZGlzYWJsZSBhIHN1YnNldCBvZiB2YWxpZGF0aW9uCj4gPj4+IHR5cGVz
Li4gZWcgX19QQUNLQUdFX18tPm15c3FsX3ZhbGlkYXRpb25fZW5hYmxlKCBxdy8gOmFsbCAvICk7
Cj4gPj4+IF9fUEFDS0FHRV9fLT5teXNxbF92YWxpZGF0aW9uX2Rpc2FibGUoIHF3LyBkYXRlIGRh
dGV0aW1lIC8gKTsgSWYKPiA+Pj4geW91IGRvIHRoaXMgaW4geW91ciBzdXBlci1tb2RlbCAoZnJv
bSB3aGljaCBhbGwgaW5oZXJpdCkgdGhpcwo+ID4+PiB3b3VsZCBhcHBseSBnbG9iYWxseS4gSWYg
eW91IHN3aXRjaCB0aGUgREJNUyBub3csIHlvdSBzaW1wbGUgbG9hZAo+ID4+PiBhbm90aGVyIG1v
ZHVsZSBsaWtlIERCSXg6OkNsYXNzOjpEYXRhVmFsaWRhdG9yOjpQb3N0Z3Jlc1R5cGVzIG9yCj4g
Pj4+IHNvIGFuZCBhbGwgdGhlIHNwZWNpYWwgY29sdW1ucyBmb3IgdGhpcyBEQk1TIHdpbGwgYmUg
dmFsaWRhdGVkLgo+ID4+IEJhaC4gQXV0b2xvYWQgdGhhdCBjcmFwIGJhc2VkIG9uIHRoZSBzdG9y
YWdlX3R5cGUgSSBhbHJlYWR5IHRvbGQKPiA+PiBEQklDIGFib3V0IGluIG15IERTTi4gRG9uJ3Qg
bWFrZSBtZSBoYXJkY29kZSBhbnl0aGluZy4KPiA+Pgo+ID4+IFJvYgo+ID4+Cj4gPgo+ID4gQWxy
aWdodCB0aGVuLCBpJ2xsIGxvb2sgaW50byBpdCBhdCB0aGUgd2Vla2VuZC4gVGhlIHZhbGlkYXRp
b24gdmlhCj4gPiBEQk1TIGRldGVybWluaWF0aW9uIGxvb2tzIGxpa2UgYSBnb29kZSBpZGVhLiBU
aGFua3MuCj4gPgo+Cj4gT2ssIGkndmUgdXBkYXRlZCB0aGUgbW9kdWxlcyBjb25jZXJuaW5nIHlv
dXIgaWRlYXMuIEEgZGItdHlwZSBhd2FyZQo+IHZhbGlkYXRpb24gd291bGQgYmUgYXV0by1sb2Fk
ZWQgYW5kIGFwcGxpZWQsIGlmIG5vdCBkaXNhYmxlZC4gQnV0LCBhcyBFZGVuCj4gd3JvdGUsIHRo
ZSBEQk1TIHN0dWZmIHdpbGwgYmUgYWRkZWQgaW4gREJJQyAwLjkgYW55d2F5LCBzbyBpIGtlcHQg
aXQgbW9zdAo+IHNpbXBsaXN0aWMgYW5kIG1vZHVsYXIsIHRoYXQgaXQgY2FuIGJlIHJlbW92ZWQg
bGF0ZXIgb24gYW5kIGRvZXNudCBtYWtlIG1lCj4gdG8gd2FzdGUgbXVjaCB0aW1lIG5vdy4KPiBG
dXJ0aGVyLCBpJ20gbm90IHN1cmUgImhvdyBtdWNoIHZhbGlkYXRpb24iIHdpbGwgYmUgcGFydCBv
ZiAwLjkgYW5kIGlmIHRoaXMKPiBtb2R1bGUgKGV2ZW4gd2l0aG91dCB0aGUgREJNUyBzdHVmZikg
aXMgbm90IHRvdGFsbHkgb2Jzb2xldGUgd2hlbiBEQklDIDAuOQo+IHJlbGVhc2VzLiBIb3dldmVy
LCBpIG5lZWQgdmFsaWRhdGlvbiAoZXNwZWNpYWxseSBmb3IgcHJvZmlsZXMpIHJpZ2h0IG5vdyBh
bmQKPiBjYW50IHdhaXQgZm9yIHRoZSByZWxlYXNlLiBDb3VsZCdudCBmaW5kIGFueSBhbnkgZGF0
ZSwgdGhvdWdoLgo+Cj4gSSd2ZSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIHRvIGV4cGxhaW4g
dGhlIGlkZWFzIGFuZCBwb3NzaWJpbGl0aWVzIG9mCj4gdGhpcyBtb2R1bGUuIEZvbGxvd2luZyBp
J3ZlIHBhc3RlZCBhbiBleGNlcnB0LCB3aGljaCBzaG91bGQgZXhwbGFpbiBtb3N0IG9mCj4gaXQg
YnJpZWZseSBhbmQgZG9lc250IG1ha2UgbWUgd3JpdGUgaXQgdHdpY2U6Cj4KPiAqKioqKioqKioq
KioqKioqKioqKioqKgo+IFsuLi5dIGEgc2hvcnQgaW50cm9kdWN0aW9uIG9mIHRoZSBtdWx0aXBs
ZSBhcHByb2FjaGVzIGFuZCBtZXRob2RzIHlvdSBjYW4KPiBmb2xsb3cgdG8gYWNoaWV2ZSB2YWxp
ZGF0aW9uLgo+Cj4gTW9zdCBvZiB0aGVtIGNvdWxkIGJlIGNvbWJpbmVkIGFuZCBhcmUgbm90ICJl
aXRoZXItb3IiLgo+Cj4gKiBWYWxpZGF0aW9uIHByb2ZpbGVzCj4gICBUaGVzZSBhcmUgbWVudCB0
byBiZSB1c2VkIGluIG1vc3QgY29tcGxleCB2YWxpZGF0aW9uIHNjZW5hcmlvcy4gWW91IGNhbgo+
IHZhbGlkYXRlIHRoZSBkYXRhIHdpdGggbXVsdGlwbGUgcHJvZmlsZXMgKG9uZSBhZnRlciBhbm90
aGVyLCBjaGFpbmVkKQo+ICAgd2l0aCBvbmUgY2FsbC4KPgo+ICogSW5saW5lIGNvbHVtbiB2YWxp
ZGF0aW9uCj4gICBEaXJlY3RseSBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24gdmlhIGFkZF9jb2x1
bW4gdGhleSBhcmUgbW9zdCBzaW1wbGUgYW5kCj4gZmFzdC4gQWxzbyB0aGUgZGVmaW5pdGlvbiBv
ZiB0aGUgY29sdW1ucyBpcyBub3QgYXBhcnQgZnJvbSB0aGUgZGVmaeKAkAo+ICAgbml0aW9uIG9m
IHRoZSB2YWxpZGF0aW9uLgo+Cj4gICBUaGV5IGFyZSBsaW1pdGVkIGJlY2F1c2UgdGhleSBoYXZl
IHRvIGZpdCBhbHdheXMgKGVhY2ggc2F2ZSkgYW5kIGNhbm5vdAo+IGJlIHVzZWQsIGFzIHZhbGlk
YXRpb24gcHJvZmlsZXMsIG9ubHkgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLgo+CgpJJ20gbm90
IGNvbXBsZXRlbHkgc3VyZSB3aGF0IHlvdSBtZWFuIGJ5IHRoaXMuICBBcmUgeW91IHRyeWluZyB0
byBzYXkgdGhhdApjb2x1bW4gdmFsaWRhdGlvbiBpcyB1c2VkIGZvciBib3RoIGluc2VydHMgYW5k
IHVwZGF0ZXMgbm8gbWF0dGVyIHdoYXQKcHJvZmlsZSB5b3UgYXJlIHVzaW5nPwoKCj4KPiAgIFlv
dSBjYW4gZWFzaWx5IHVzZSB0aGVtIGluIGFkZGl0aW9uIHRvIHZhbGlkYXRpb24gcHJvZmlsZXMg
b3IgZXhjbHVzaXZlLgo+IEluIHRoZSBmaXJzdCBjYXNlIHRoZXnigJlsbCBydW4gYmVmb3JlIHRo
ZSB2YWxpZGF0aW9uIHByb2ZpbGVzLgo+Cj4gKiBEQk1TIHNwZWNpZmljIHZhbGlkYXRpb24KPiAg
IFRoaXMgaXMgYSBraW5kIG9mIGF1dG8tdmFsaWRhdGlvbiBmb3IgYmFzaWMgZGF0YXR5cGVzIG9m
IHlvdXIgY29sdW1uLgo+IFRoZXkgYXJlIERCTVMgZGVwZW5kZW50LiBTbyBPcmFjbGUgREIgbWln
aHQgaGF2ZSBzb21lIHR5cGVzIHdoaWNoIFBvc3TigJAKPiAgIGdyZVNRTCBoYXMgbm90IGFuZCB2
aWNlIHZlcnNhLiBBbHNvIHRoZSBkYXRlcyBmb3IgUG9zdGdyZVNRTCBEQnMgYW5kIGZvcgo+IE15
U1FMIERCcyBsb29rIGRpZmZlcmVudC4KPgo+ICAgVGhleSBub3JtYWxseSBhcHBseSBwZXIgZGVm
YXVsdCBpZiB5b3UgZG9udCBkZWFjdGl2YXRlIHRoZW0gbWFudWFsbHkgKHNlZQo+IGJlbG93KS4g
VGhleSBhcmUgb3ZlcndyaXR0ZW4gYnkgeW91ciBjdXN0b20gaW5saW5lIGNvbHVtbgo+ICAgdmFs
aWRhdGlvbi4KPgo+ICAgVGhleSBjYW4gYmUgdW5kZXJzdGFuZCBhcyBhIGtpbmQgb2YgZGVmYXVs
dCBpbmxpbmUgY29sdW1uIHZhbGlkYXRpb24uCj4KPiAqIE5hbWVkIHZhbGlkYXRpb24gbWV0aG9k
cwo+ICAgVGhvc2UgY291bGQgYmUgdXNlZCBlaXRoZXIgaW4gaW5saW5lIGNvbHVtbiB2YWxpZGF0
aW9uIG9yIHZhbGlkYXRpb24KPiBwcm9maWxlcyBhbGlrZS4gIFRoaXMgaXMgc2ltcGx5IGFuIGFw
cHJvYWNoIHRvIG91dHNvdXJjZSBvZnRlbiB1c2VkIHZhbGnigJAKPiAgIGRhdGlvbiBtZXRob2Rz
IG9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gcmV1c2UgdGhlbSBpbiBtdWx0aXBsZSBtb2RlbHMK
PiBhbmQvb3IgZm9yIG11bHRpcGxlIGNvbHVtbnMuCj4KPiAqIFZhbGlkYXRpb24gY29sdW1uIGNs
YXNzZXMKPiAgIEFub3RoZXIgYXBwcm9hY2ggdG8gcmVkdWNlIGNvZGUgaW4geW91ciBtb2RlbHMg
YnkgcHJlLWRlZmluaW5nLiAgVGhpcwo+IGluY2x1ZGVzIG1vcmUgdGhlbiB0aGUgYmFzaWMgZGF0
YXR5cGVzICh5b3UgY2FuIHNheSBlYWNoIGludGVnZXIgY29sdW1uCj4gICBpcyBhbiBpbnRlZ2Vy
LWNsYXNzIGNvbHVtbikgYnkgYWxsb3dpbmcgY3VzdG9tIGFuZCBjb21wbGV4IHZhbGlkYXRpb25z
Lgo+Cj4gICBUaGV5IGNhbiBhbHNvIHVzZWQgZm9yIG5vbiB2YWxpZGF0aW9uIHB1cnBvc2VzIChq
dXN0IGRvbnQgdXNlIHRoZQo+IHZhbGlkYXRpb24ga2V5KS4gTmFtZWQgdmFsaWRhdGlvbiBtZXRo
b2RzIGFyZSBvZiBjb3Vyc2UgdXNhYmxlLgo+Cj4gICBQcm9iYWJseSB5b3Ugc2hvdWxkIGRlZmlu
ZSB0aG9zZSBjbGFzc2VzIGluIGEgc3VwZXIgbW9kZWwgZnJvbSB3aGljaCBhbGwKPiB5b3VyIG90
aGVyIG1vZGVscyBpbmhlcml0IHRvIGdldCB0aGUgbW9zdCBiZW5lZml0IG91dCBvZiBpdC4KPiAq
KioqKioqKioqKioqKioqKioqKioqKgo+Cj4gUGxlYXNlIHJlYWQgdGhlIFBPRCBpbiBEQkl4OjpD
bGFzczo6RGF0YVZhbGlkYXRvciBmb3IgbW9yZSBpbmZvLi4KPgo+IERlc3BpdGUgd2hhdCBpIHdy
b3RlIGFib3ZlIGFib3V0IDAuOSwgaSB0aGluayBpIGNvdWxkIHByb3ZpZGUgREJNUyBzcGVjaWZp
Ywo+IHZhbGlkYXRpb24gZm9yIE15U1FMIGFuZCBQb3N0Z3JlU1FMIGJlZm9yZSBpIHJlbGVhc2Ug
dGhpcyB0byBDUEFOIChidXQgaW4KPiBzZXBwYXJhdGUgcGFja2FnZXMsIGR1ZSB0byBkZXBlbmRl
bmNpZXMpLCBidXQgZmlyc3Qgb2YgYWxsIGkgd291bGQgbGlrZSB0bwo+IGhlYXIgd2hhdCB5b3Ug
YWxsIHRoaW5rICBhYm91dCB0aGUgdXNlZnVsbG5lc3MgYXQgYWxsLgo+Cj4gTmljZSB3ZWVrZW5k
IHRvIGV2ZXJ5Ym9keSEKPiBVbHJpY2gKCgpUaGFua3MgZm9yIHNwZW5kaW5nIHlvdXIgdGltZSBv
biB0aGlzISAgSSBsb29rZWQgdGhyb3VnaCB5b3VyIHRlc3RzIGFuZApicmllZmx5IHJlYWQgc29t
ZSBjb2RlIGFuZCBJIHRoaW5rIHRoaXMgd2lsbCBkbyBxdWl0ZSBuaWNlbHkuICBKdXN0IGEgY291
cGxlCnF1ZXN0aW9uczogZG9lcyBpdCBvbmx5IHZhbGlkYXRlIHdoZW4geW91IGNhbGwgY3JlYXRl
X3ZhbGlkYXRlZCBvciBjYW4geW91CmhhdmUgY3JlYXRlIHZhbGlkYXRlIGJ5IGRlZmF1bHQ/ICBT
YW1lIGZvciB1cGRhdGUgYW5kIHRoZSAkcnMgdmVyc2lvbiBvZgp1cGRhdGUuCi0tIApmUkVXIFNj
aG1pZHQKaHR0cDovL2Jsb2cuYWZvb2xpc2htYW5pZmVzdG8uY29tCi0tLS0tLS0tLS0tLS0tIG5l
eHQgcGFydCAtLS0tLS0tLS0tLS0tLQpBbiBIVE1MIGF0dGFjaG1lbnQgd2FzIHNjcnViYmVkLi4u
ClVSTDogaHR0cDovL2xpc3RzLnNjc3lzLmNvLnVrL3BpcGVybWFpbC9kYml4LWNsYXNzL2F0dGFj
aG1lbnRzLzIwMDkwNzI1LzhkYzAwOTczL2F0dGFjaG1lbnQuaHRtCg==


More information about the DBIx-Class mailing list