Showing 4 changed files with 0 additions and 2160 deletions
-885
Makefile.old
... ...
@@ -1,885 +0,0 @@
1
-# This Makefile is for the DBIx::Custom extension to perl.
2
-#
3
-# It was generated automatically by MakeMaker version
4
-# 6.56 (Revision: 65600) from the contents of
5
-# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
6
-#
7
-#       ANY CHANGES MADE HERE WILL BE LOST!
8
-#
9
-#   MakeMaker ARGV: ()
10
-#
11
-
12
-#   MakeMaker Parameters:
13
-
14
-#     ABSTRACT_FROM => q[lib/DBIx/Custom.pm]
15
-#     AUTHOR => q[Yuki Kimoto <kimoto.yuki@gmail.com>]
16
-#     BUILD_REQUIRES => {  }
17
-#     LICENSE => q[perl]
18
-#     NAME => q[DBIx::Custom]
19
-#     PL_FILES => {  }
20
-#     PREREQ_PM => { Test::More=>q[0], Object::Simple=>q[3.0616], DBD::SQLite=>q[1.25], DBI=>q[1.605] }
21
-#     VERSION_FROM => q[lib/DBIx/Custom.pm]
22
-#     clean => { FILES=>q[DBIx-Custom-*] }
23
-#     dist => { COMPRESS=>q[gzip -9f], SUFFIX=>q[gz] }
24
-
25
-# --- MakeMaker post_initialize section:
26
-
27
-
28
-# --- MakeMaker const_config section:
29
-
30
-# These definitions are from config.sh (via /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Config.pm).
31
-# They may have been overridden via Makefile.PL or on the command line.
32
-AR = ar
33
-CC = gcc
34
-CCCDLFLAGS = -fPIC
35
-CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE
36
-DLEXT = so
37
-DLSRC = dl_dlopen.xs
38
-EXE_EXT = 
39
-FULL_AR = /usr/bin/ar
40
-LD = gcc
41
-LDDLFLAGS = -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib
42
-LDFLAGS =  -L/usr/local/lib
43
-LIBC = /lib/libc-2.5.so
44
-LIB_EXT = .a
45
-OBJ_EXT = .o
46
-OSNAME = linux
47
-OSVERS = 2.6.18-53.el5
48
-RANLIB = :
49
-SITELIBEXP = /usr/lib/perl5/site_perl/5.8.8
50
-SITEARCHEXP = /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
51
-SO = so
52
-VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
53
-VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.8.8
54
-
55
-
56
-# --- MakeMaker constants section:
57
-AR_STATIC_ARGS = cr
58
-DIRFILESEP = /
59
-DFSEP = $(DIRFILESEP)
60
-NAME = DBIx::Custom
61
-NAME_SYM = DBIx_Custom
62
-VERSION = 0.1680
63
-VERSION_MACRO = VERSION
64
-VERSION_SYM = 0_1680
65
-DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
66
-XS_VERSION = 0.1680
67
-XS_VERSION_MACRO = XS_VERSION
68
-XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
69
-INST_ARCHLIB = blib/arch
70
-INST_SCRIPT = blib/script
71
-INST_BIN = blib/bin
72
-INST_LIB = blib/lib
73
-INST_MAN1DIR = blib/man1
74
-INST_MAN3DIR = blib/man3
75
-MAN1EXT = 1
76
-MAN3EXT = 3pm
77
-INSTALLDIRS = site
78
-DESTDIR = 
79
-PREFIX = $(SITEPREFIX)
80
-PERLPREFIX = /usr
81
-SITEPREFIX = /usr
82
-VENDORPREFIX = /usr
83
-INSTALLPRIVLIB = /usr/lib/perl5/5.8.8
84
-DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
85
-INSTALLSITELIB = /usr/lib/perl5/site_perl/5.8.8
86
-DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
87
-INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.8.8
88
-DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
89
-INSTALLARCHLIB = /usr/lib/perl5/5.8.8/i386-linux-thread-multi
90
-DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
91
-INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
92
-DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
93
-INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
94
-DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
95
-INSTALLBIN = /usr/bin
96
-DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
97
-INSTALLSITEBIN = /usr/bin
98
-DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
99
-INSTALLVENDORBIN = /usr/bin
100
-DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
101
-INSTALLSCRIPT = /usr/bin
102
-DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
103
-INSTALLSITESCRIPT = /usr/bin
104
-DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
105
-INSTALLVENDORSCRIPT = /usr/bin
106
-DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
107
-INSTALLMAN1DIR = /usr/share/man/man1
108
-DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
109
-INSTALLSITEMAN1DIR = /usr/share/man/man1
110
-DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
111
-INSTALLVENDORMAN1DIR = /usr/share/man/man1
112
-DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
113
-INSTALLMAN3DIR = /usr/share/man/man3
114
-DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
115
-INSTALLSITEMAN3DIR = /usr/share/man/man3
116
-DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
117
-INSTALLVENDORMAN3DIR = /usr/share/man/man3
118
-DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
119
-PERL_LIB = /usr/lib/perl5/5.8.8
120
-PERL_ARCHLIB = /usr/lib/perl5/5.8.8/i386-linux-thread-multi
121
-LIBPERL_A = libperl.a
122
-FIRST_MAKEFILE = Makefile
123
-MAKEFILE_OLD = Makefile.old
124
-MAKE_APERL_FILE = Makefile.aperl
125
-PERLMAINCC = $(CC)
126
-PERL_INC = /usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE
127
-PERL = /usr/bin/perl
128
-FULLPERL = /usr/bin/perl
129
-ABSPERL = $(PERL)
130
-PERLRUN = $(PERL)
131
-FULLPERLRUN = $(FULLPERL)
132
-ABSPERLRUN = $(ABSPERL)
133
-PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
134
-FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
135
-ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
136
-PERL_CORE = 0
137
-PERM_DIR = 755
138
-PERM_RW = 644
139
-PERM_RWX = 755
140
-
141
-MAKEMAKER   = /home/kimoto/perl5/lib/perl5/ExtUtils/MakeMaker.pm
142
-MM_VERSION  = 6.56
143
-MM_REVISION = 65600
144
-
145
-# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
146
-# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
147
-# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
148
-# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
149
-MAKE = make
150
-FULLEXT = DBIx/Custom
151
-BASEEXT = Custom
152
-PARENT_NAME = DBIx
153
-DLBASE = $(BASEEXT)
154
-VERSION_FROM = lib/DBIx/Custom.pm
155
-OBJECT = 
156
-LDFROM = $(OBJECT)
157
-LINKTYPE = dynamic
158
-BOOTDEP = 
159
-
160
-# Handy lists of source code files:
161
-XS_FILES = 
162
-C_FILES  = 
163
-O_FILES  = 
164
-H_FILES  = 
165
-MAN1PODS = 
166
-MAN3PODS = lib/DBIx/Custom.pm \
167
-	lib/DBIx/Custom/Guide.pod \
168
-	lib/DBIx/Custom/Guide/Ja.pod \
169
-	lib/DBIx/Custom/Model.pm \
170
-	lib/DBIx/Custom/Query.pm \
171
-	lib/DBIx/Custom/QueryBuilder.pm \
172
-	lib/DBIx/Custom/Result.pm \
173
-	lib/DBIx/Custom/Tag.pm \
174
-	lib/DBIx/Custom/Util.pm \
175
-	lib/DBIx/Custom/Where.pm
176
-
177
-# Where is the Config information that we are using/depend on
178
-CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
179
-
180
-# Where to build things
181
-INST_LIBDIR      = $(INST_LIB)/DBIx
182
-INST_ARCHLIBDIR  = $(INST_ARCHLIB)/DBIx
183
-
184
-INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
185
-INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
186
-
187
-INST_STATIC      = 
188
-INST_DYNAMIC     = 
189
-INST_BOOT        = 
190
-
191
-# Extra linker info
192
-EXPORT_LIST        = 
193
-PERL_ARCHIVE       = 
194
-PERL_ARCHIVE_AFTER = 
195
-
196
-
197
-TO_INST_PM = lib/DBIx/Custom.pm \
198
-	lib/DBIx/Custom/Guide.pod \
199
-	lib/DBIx/Custom/Guide/Ja.pod \
200
-	lib/DBIx/Custom/Model.pm \
201
-	lib/DBIx/Custom/Query.pm \
202
-	lib/DBIx/Custom/QueryBuilder.pm \
203
-	lib/DBIx/Custom/Result.pm \
204
-	lib/DBIx/Custom/Tag.pm \
205
-	lib/DBIx/Custom/Util.pm \
206
-	lib/DBIx/Custom/Where.pm
207
-
208
-PM_TO_BLIB = lib/DBIx/Custom/Tag.pm \
209
-	blib/lib/DBIx/Custom/Tag.pm \
210
-	lib/DBIx/Custom/Guide/Ja.pod \
211
-	blib/lib/DBIx/Custom/Guide/Ja.pod \
212
-	lib/DBIx/Custom/Util.pm \
213
-	blib/lib/DBIx/Custom/Util.pm \
214
-	lib/DBIx/Custom/Guide.pod \
215
-	blib/lib/DBIx/Custom/Guide.pod \
216
-	lib/DBIx/Custom/Where.pm \
217
-	blib/lib/DBIx/Custom/Where.pm \
218
-	lib/DBIx/Custom/Model.pm \
219
-	blib/lib/DBIx/Custom/Model.pm \
220
-	lib/DBIx/Custom.pm \
221
-	blib/lib/DBIx/Custom.pm \
222
-	lib/DBIx/Custom/Query.pm \
223
-	blib/lib/DBIx/Custom/Query.pm \
224
-	lib/DBIx/Custom/Result.pm \
225
-	blib/lib/DBIx/Custom/Result.pm \
226
-	lib/DBIx/Custom/QueryBuilder.pm \
227
-	blib/lib/DBIx/Custom/QueryBuilder.pm
228
-
229
-
230
-# --- MakeMaker platform_constants section:
231
-MM_Unix_VERSION = 6.56
232
-PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
233
-
234
-
235
-# --- MakeMaker tool_autosplit section:
236
-# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
237
-AUTOSPLITFILE = $(ABSPERLRUN)  -e 'use AutoSplit;  autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' --
238
-
239
-
240
-
241
-# --- MakeMaker tool_xsubpp section:
242
-
243
-
244
-# --- MakeMaker tools_other section:
245
-SHELL = /bin/sh
246
-CHMOD = chmod
247
-CP = cp
248
-MV = mv
249
-NOOP = $(TRUE)
250
-NOECHO = @
251
-RM_F = rm -f
252
-RM_RF = rm -rf
253
-TEST_F = test -f
254
-TOUCH = touch
255
-UMASK_NULL = umask 0
256
-DEV_NULL = > /dev/null 2>&1
257
-MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
258
-EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
259
-FALSE = false
260
-TRUE = true
261
-ECHO = echo
262
-ECHO_N = echo -n
263
-UNINST = 0
264
-VERBINST = 0
265
-MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
266
-DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
267
-UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
268
-WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
269
-MACROSTART = 
270
-MACROEND = 
271
-USEMAKEFILE = -f
272
-FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
273
-
274
-
275
-# --- MakeMaker makemakerdflt section:
276
-makemakerdflt : all
277
-	$(NOECHO) $(NOOP)
278
-
279
-
280
-# --- MakeMaker dist section:
281
-TAR = tar
282
-TARFLAGS = cvf
283
-ZIP = zip
284
-ZIPFLAGS = -r
285
-COMPRESS = gzip -9f
286
-SUFFIX = gz
287
-SHAR = shar
288
-PREOP = $(NOECHO) $(NOOP)
289
-POSTOP = $(NOECHO) $(NOOP)
290
-TO_UNIX = $(NOECHO) $(NOOP)
291
-CI = ci -u
292
-RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
293
-DIST_CP = best
294
-DIST_DEFAULT = tardist
295
-DISTNAME = DBIx-Custom
296
-DISTVNAME = DBIx-Custom-0.1680
297
-
298
-
299
-# --- MakeMaker macro section:
300
-
301
-
302
-# --- MakeMaker depend section:
303
-
304
-
305
-# --- MakeMaker cflags section:
306
-
307
-
308
-# --- MakeMaker const_loadlibs section:
309
-
310
-
311
-# --- MakeMaker const_cccmd section:
312
-
313
-
314
-# --- MakeMaker post_constants section:
315
-
316
-
317
-# --- MakeMaker pasthru section:
318
-
319
-PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
320
-	LINKTYPE="$(LINKTYPE)"\
321
-	PREFIX="$(PREFIX)"
322
-
323
-
324
-# --- MakeMaker special_targets section:
325
-.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
326
-
327
-.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
328
-
329
-
330
-
331
-# --- MakeMaker c_o section:
332
-
333
-
334
-# --- MakeMaker xs_c section:
335
-
336
-
337
-# --- MakeMaker xs_o section:
338
-
339
-
340
-# --- MakeMaker top_targets section:
341
-all :: pure_all manifypods
342
-	$(NOECHO) $(NOOP)
343
-
344
-
345
-pure_all :: config pm_to_blib subdirs linkext
346
-	$(NOECHO) $(NOOP)
347
-
348
-subdirs :: $(MYEXTLIB)
349
-	$(NOECHO) $(NOOP)
350
-
351
-config :: $(FIRST_MAKEFILE) blibdirs
352
-	$(NOECHO) $(NOOP)
353
-
354
-help :
355
-	perldoc ExtUtils::MakeMaker
356
-
357
-
358
-# --- MakeMaker blibdirs section:
359
-blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
360
-	$(NOECHO) $(NOOP)
361
-
362
-# Backwards compat with 6.18 through 6.25
363
-blibdirs.ts : blibdirs
364
-	$(NOECHO) $(NOOP)
365
-
366
-$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
367
-	$(NOECHO) $(MKPATH) $(INST_LIBDIR)
368
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
369
-	$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
370
-
371
-$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
372
-	$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
373
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
374
-	$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
375
-
376
-$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
377
-	$(NOECHO) $(MKPATH) $(INST_AUTODIR)
378
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
379
-	$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
380
-
381
-$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
382
-	$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
383
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
384
-	$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
385
-
386
-$(INST_BIN)$(DFSEP).exists :: Makefile.PL
387
-	$(NOECHO) $(MKPATH) $(INST_BIN)
388
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
389
-	$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
390
-
391
-$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
392
-	$(NOECHO) $(MKPATH) $(INST_SCRIPT)
393
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
394
-	$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
395
-
396
-$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
397
-	$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
398
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
399
-	$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
400
-
401
-$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
402
-	$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
403
-	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
404
-	$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
405
-
406
-
407
-
408
-# --- MakeMaker linkext section:
409
-
410
-linkext :: $(LINKTYPE)
411
-	$(NOECHO) $(NOOP)
412
-
413
-
414
-# --- MakeMaker dlsyms section:
415
-
416
-
417
-# --- MakeMaker dynamic section:
418
-
419
-dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
420
-	$(NOECHO) $(NOOP)
421
-
422
-
423
-# --- MakeMaker dynamic_bs section:
424
-
425
-BOOTSTRAP =
426
-
427
-
428
-# --- MakeMaker dynamic_lib section:
429
-
430
-
431
-# --- MakeMaker static section:
432
-
433
-## $(INST_PM) has been moved to the all: target.
434
-## It remains here for awhile to allow for old usage: "make static"
435
-static :: $(FIRST_MAKEFILE) $(INST_STATIC)
436
-	$(NOECHO) $(NOOP)
437
-
438
-
439
-# --- MakeMaker static_lib section:
440
-
441
-
442
-# --- MakeMaker manifypods section:
443
-
444
-POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
445
-POD2MAN = $(POD2MAN_EXE)
446
-
447
-
448
-manifypods : pure_all  \
449
-	lib/DBIx/Custom/Tag.pm \
450
-	lib/DBIx/Custom/Guide/Ja.pod \
451
-	lib/DBIx/Custom/Util.pm \
452
-	lib/DBIx/Custom/Guide.pod \
453
-	lib/DBIx/Custom/Where.pm \
454
-	lib/DBIx/Custom/Model.pm \
455
-	lib/DBIx/Custom.pm \
456
-	lib/DBIx/Custom/Query.pm \
457
-	lib/DBIx/Custom/Result.pm \
458
-	lib/DBIx/Custom/QueryBuilder.pm
459
-	$(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
460
-	  lib/DBIx/Custom/Tag.pm $(INST_MAN3DIR)/DBIx::Custom::Tag.$(MAN3EXT) \
461
-	  lib/DBIx/Custom/Guide/Ja.pod $(INST_MAN3DIR)/DBIx::Custom::Guide::Ja.$(MAN3EXT) \
462
-	  lib/DBIx/Custom/Util.pm $(INST_MAN3DIR)/DBIx::Custom::Util.$(MAN3EXT) \
463
-	  lib/DBIx/Custom/Guide.pod $(INST_MAN3DIR)/DBIx::Custom::Guide.$(MAN3EXT) \
464
-	  lib/DBIx/Custom/Where.pm $(INST_MAN3DIR)/DBIx::Custom::Where.$(MAN3EXT) \
465
-	  lib/DBIx/Custom/Model.pm $(INST_MAN3DIR)/DBIx::Custom::Model.$(MAN3EXT) \
466
-	  lib/DBIx/Custom.pm $(INST_MAN3DIR)/DBIx::Custom.$(MAN3EXT) \
467
-	  lib/DBIx/Custom/Query.pm $(INST_MAN3DIR)/DBIx::Custom::Query.$(MAN3EXT) \
468
-	  lib/DBIx/Custom/Result.pm $(INST_MAN3DIR)/DBIx::Custom::Result.$(MAN3EXT) \
469
-	  lib/DBIx/Custom/QueryBuilder.pm $(INST_MAN3DIR)/DBIx::Custom::QueryBuilder.$(MAN3EXT) 
470
-
471
-
472
-
473
-
474
-# --- MakeMaker processPL section:
475
-
476
-
477
-# --- MakeMaker installbin section:
478
-
479
-
480
-# --- MakeMaker subdirs section:
481
-
482
-# none
483
-
484
-# --- MakeMaker clean_subdirs section:
485
-clean_subdirs :
486
-	$(NOECHO) $(NOOP)
487
-
488
-
489
-# --- MakeMaker clean section:
490
-
491
-# Delete temporary files but do not touch installed files. We don't delete
492
-# the Makefile here so a later make realclean still has a makefile to use.
493
-
494
-clean :: clean_subdirs
495
-	- $(RM_F) \
496
-	  *$(LIB_EXT) core \
497
-	  core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
498
-	  core.[0-9][0-9] $(BASEEXT).bso \
499
-	  pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
500
-	  $(BASEEXT).x $(BOOTSTRAP) \
501
-	  perl$(EXE_EXT) tmon.out \
502
-	  *$(OBJ_EXT) pm_to_blib \
503
-	  $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
504
-	  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
505
-	  core.*perl.*.? $(MAKE_APERL_FILE) \
506
-	  perl $(BASEEXT).def \
507
-	  core.[0-9][0-9][0-9] mon.out \
508
-	  lib$(BASEEXT).def perlmain.c \
509
-	  perl.exe so_locations \
510
-	  $(BASEEXT).exp 
511
-	- $(RM_RF) \
512
-	  DBIx-Custom-* blib 
513
-	- $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
514
-
515
-
516
-# --- MakeMaker realclean_subdirs section:
517
-realclean_subdirs :
518
-	$(NOECHO) $(NOOP)
519
-
520
-
521
-# --- MakeMaker realclean section:
522
-# Delete temporary files (via clean) and also delete dist files
523
-realclean purge ::  clean realclean_subdirs
524
-	- $(RM_F) \
525
-	  $(MAKEFILE_OLD) $(FIRST_MAKEFILE) 
526
-	- $(RM_RF) \
527
-	  $(DISTVNAME) 
528
-
529
-
530
-# --- MakeMaker metafile section:
531
-metafile : create_distdir
532
-	$(NOECHO) $(ECHO) Generating META.yml
533
-	$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
534
-	$(NOECHO) $(ECHO) 'name:               DBIx-Custom' >> META_new.yml
535
-	$(NOECHO) $(ECHO) 'version:            0.1680' >> META_new.yml
536
-	$(NOECHO) $(ECHO) 'abstract:           Useful database access, respecting SQL!' >> META_new.yml
537
-	$(NOECHO) $(ECHO) 'author:' >> META_new.yml
538
-	$(NOECHO) $(ECHO) '    - Yuki Kimoto <kimoto.yuki@gmail.com>' >> META_new.yml
539
-	$(NOECHO) $(ECHO) 'license:            perl' >> META_new.yml
540
-	$(NOECHO) $(ECHO) 'distribution_type:  module' >> META_new.yml
541
-	$(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
542
-	$(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
543
-	$(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
544
-	$(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
545
-	$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
546
-	$(NOECHO) $(ECHO) '    DBD::SQLite:     1.25' >> META_new.yml
547
-	$(NOECHO) $(ECHO) '    DBI:             1.605' >> META_new.yml
548
-	$(NOECHO) $(ECHO) '    Object::Simple:  3.0616' >> META_new.yml
549
-	$(NOECHO) $(ECHO) '    Test::More:      0' >> META_new.yml
550
-	$(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
551
-	$(NOECHO) $(ECHO) '    directory:' >> META_new.yml
552
-	$(NOECHO) $(ECHO) '        - t' >> META_new.yml
553
-	$(NOECHO) $(ECHO) '        - inc' >> META_new.yml
554
-	$(NOECHO) $(ECHO) 'generated_by:       ExtUtils::MakeMaker version 6.56' >> META_new.yml
555
-	$(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
556
-	$(NOECHO) $(ECHO) '    url:      http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
557
-	$(NOECHO) $(ECHO) '    version:  1.4' >> META_new.yml
558
-	-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
559
-
560
-
561
-# --- MakeMaker signature section:
562
-signature :
563
-	cpansign -s
564
-
565
-
566
-# --- MakeMaker dist_basics section:
567
-distclean :: realclean distcheck
568
-	$(NOECHO) $(NOOP)
569
-
570
-distcheck :
571
-	$(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
572
-
573
-skipcheck :
574
-	$(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
575
-
576
-manifest :
577
-	$(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
578
-
579
-veryclean : realclean
580
-	$(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old 
581
-
582
-
583
-
584
-# --- MakeMaker dist_core section:
585
-
586
-dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
587
-	$(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
588
-	  -e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
589
-
590
-tardist : $(DISTVNAME).tar$(SUFFIX)
591
-	$(NOECHO) $(NOOP)
592
-
593
-uutardist : $(DISTVNAME).tar$(SUFFIX)
594
-	uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
595
-
596
-$(DISTVNAME).tar$(SUFFIX) : distdir
597
-	$(PREOP)
598
-	$(TO_UNIX)
599
-	$(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
600
-	$(RM_RF) $(DISTVNAME)
601
-	$(COMPRESS) $(DISTVNAME).tar
602
-	$(POSTOP)
603
-
604
-zipdist : $(DISTVNAME).zip
605
-	$(NOECHO) $(NOOP)
606
-
607
-$(DISTVNAME).zip : distdir
608
-	$(PREOP)
609
-	$(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
610
-	$(RM_RF) $(DISTVNAME)
611
-	$(POSTOP)
612
-
613
-shdist : distdir
614
-	$(PREOP)
615
-	$(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
616
-	$(RM_RF) $(DISTVNAME)
617
-	$(POSTOP)
618
-
619
-
620
-# --- MakeMaker distdir section:
621
-create_distdir :
622
-	$(RM_RF) $(DISTVNAME)
623
-	$(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
624
-		-e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
625
-
626
-distdir : create_distdir distmeta 
627
-	$(NOECHO) $(NOOP)
628
-
629
-
630
-
631
-# --- MakeMaker dist_test section:
632
-disttest : distdir
633
-	cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL 
634
-	cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
635
-	cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
636
-
637
-
638
-
639
-# --- MakeMaker dist_ci section:
640
-
641
-ci :
642
-	$(PERLRUN) "-MExtUtils::Manifest=maniread" \
643
-	  -e "@all = keys %{ maniread() };" \
644
-	  -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
645
-	  -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
646
-
647
-
648
-# --- MakeMaker distmeta section:
649
-distmeta : create_distdir metafile
650
-	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
651
-	  -e '    or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' --
652
-
653
-
654
-
655
-# --- MakeMaker distsignature section:
656
-distsignature : create_distdir
657
-	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
658
-	  -e '    or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' --
659
-	$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
660
-	cd $(DISTVNAME) && cpansign -s
661
-
662
-
663
-
664
-# --- MakeMaker install section:
665
-
666
-install :: pure_install doc_install
667
-	$(NOECHO) $(NOOP)
668
-
669
-install_perl :: pure_perl_install doc_perl_install
670
-	$(NOECHO) $(NOOP)
671
-
672
-install_site :: pure_site_install doc_site_install
673
-	$(NOECHO) $(NOOP)
674
-
675
-install_vendor :: pure_vendor_install doc_vendor_install
676
-	$(NOECHO) $(NOOP)
677
-
678
-pure_install :: pure_$(INSTALLDIRS)_install
679
-	$(NOECHO) $(NOOP)
680
-
681
-doc_install :: doc_$(INSTALLDIRS)_install
682
-	$(NOECHO) $(NOOP)
683
-
684
-pure__install : pure_site_install
685
-	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
686
-
687
-doc__install : doc_site_install
688
-	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
689
-
690
-pure_perl_install :: all
691
-	$(NOECHO) $(MOD_INSTALL) \
692
-		read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
693
-		write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
694
-		$(INST_LIB) $(DESTINSTALLPRIVLIB) \
695
-		$(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
696
-		$(INST_BIN) $(DESTINSTALLBIN) \
697
-		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
698
-		$(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
699
-		$(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
700
-	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
701
-		$(SITEARCHEXP)/auto/$(FULLEXT)
702
-
703
-
704
-pure_site_install :: all
705
-	$(NOECHO) $(MOD_INSTALL) \
706
-		read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
707
-		write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
708
-		$(INST_LIB) $(DESTINSTALLSITELIB) \
709
-		$(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
710
-		$(INST_BIN) $(DESTINSTALLSITEBIN) \
711
-		$(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
712
-		$(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
713
-		$(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
714
-	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
715
-		$(PERL_ARCHLIB)/auto/$(FULLEXT)
716
-
717
-pure_vendor_install :: all
718
-	$(NOECHO) $(MOD_INSTALL) \
719
-		read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
720
-		write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
721
-		$(INST_LIB) $(DESTINSTALLVENDORLIB) \
722
-		$(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
723
-		$(INST_BIN) $(DESTINSTALLVENDORBIN) \
724
-		$(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
725
-		$(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
726
-		$(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
727
-
728
-doc_perl_install :: all
729
-	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
730
-	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
731
-	-$(NOECHO) $(DOC_INSTALL) \
732
-		"Module" "$(NAME)" \
733
-		"installed into" "$(INSTALLPRIVLIB)" \
734
-		LINKTYPE "$(LINKTYPE)" \
735
-		VERSION "$(VERSION)" \
736
-		EXE_FILES "$(EXE_FILES)" \
737
-		>> $(DESTINSTALLARCHLIB)/perllocal.pod
738
-
739
-doc_site_install :: all
740
-	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
741
-	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
742
-	-$(NOECHO) $(DOC_INSTALL) \
743
-		"Module" "$(NAME)" \
744
-		"installed into" "$(INSTALLSITELIB)" \
745
-		LINKTYPE "$(LINKTYPE)" \
746
-		VERSION "$(VERSION)" \
747
-		EXE_FILES "$(EXE_FILES)" \
748
-		>> $(DESTINSTALLARCHLIB)/perllocal.pod
749
-
750
-doc_vendor_install :: all
751
-	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
752
-	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
753
-	-$(NOECHO) $(DOC_INSTALL) \
754
-		"Module" "$(NAME)" \
755
-		"installed into" "$(INSTALLVENDORLIB)" \
756
-		LINKTYPE "$(LINKTYPE)" \
757
-		VERSION "$(VERSION)" \
758
-		EXE_FILES "$(EXE_FILES)" \
759
-		>> $(DESTINSTALLARCHLIB)/perllocal.pod
760
-
761
-
762
-uninstall :: uninstall_from_$(INSTALLDIRS)dirs
763
-	$(NOECHO) $(NOOP)
764
-
765
-uninstall_from_perldirs ::
766
-	$(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
767
-
768
-uninstall_from_sitedirs ::
769
-	$(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
770
-
771
-uninstall_from_vendordirs ::
772
-	$(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
773
-
774
-
775
-# --- MakeMaker force section:
776
-# Phony target to force checking subdirectories.
777
-FORCE :
778
-	$(NOECHO) $(NOOP)
779
-
780
-
781
-# --- MakeMaker perldepend section:
782
-
783
-
784
-# --- MakeMaker makefile section:
785
-# We take a very conservative approach here, but it's worth it.
786
-# We move Makefile to Makefile.old here to avoid gnu make looping.
787
-$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
788
-	$(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
789
-	$(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
790
-	-$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
791
-	-$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
792
-	- $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
793
-	$(PERLRUN) Makefile.PL 
794
-	$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
795
-	$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
796
-	$(FALSE)
797
-
798
-
799
-
800
-# --- MakeMaker staticmake section:
801
-
802
-# --- MakeMaker makeaperl section ---
803
-MAP_TARGET    = perl
804
-FULLPERL      = /usr/bin/perl
805
-
806
-$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
807
-	$(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
808
-
809
-$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
810
-	$(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
811
-	$(NOECHO) $(PERLRUNINST) \
812
-		Makefile.PL DIR= \
813
-		MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
814
-		MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
815
-
816
-
817
-# --- MakeMaker test section:
818
-
819
-TEST_VERBOSE=0
820
-TEST_TYPE=test_$(LINKTYPE)
821
-TEST_FILE = test.pl
822
-TEST_FILES = t/*.t
823
-TESTDB_SW = -d
824
-
825
-testdb :: testdb_$(LINKTYPE)
826
-
827
-test :: $(TEST_TYPE) subdirs-test
828
-
829
-subdirs-test ::
830
-	$(NOECHO) $(NOOP)
831
-
832
-
833
-test_dynamic :: pure_all
834
-	PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
835
-
836
-testdb_dynamic :: pure_all
837
-	PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
838
-
839
-test_ : test_dynamic
840
-
841
-test_static :: test_dynamic
842
-testdb_static :: testdb_dynamic
843
-
844
-
845
-# --- MakeMaker ppd section:
846
-# Creates a PPD (Perl Package Description) for a binary distribution.
847
-ppd :
848
-	$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0.1680">' > $(DISTNAME).ppd
849
-	$(NOECHO) $(ECHO) '    <ABSTRACT>Useful database access, respecting SQL!</ABSTRACT>' >> $(DISTNAME).ppd
850
-	$(NOECHO) $(ECHO) '    <AUTHOR>Yuki Kimoto &lt;kimoto.yuki@gmail.com&gt;</AUTHOR>' >> $(DISTNAME).ppd
851
-	$(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
852
-	$(NOECHO) $(ECHO) '        <REQUIRE NAME="DBD::SQLite" VERSION="1.25" />' >> $(DISTNAME).ppd
853
-	$(NOECHO) $(ECHO) '        <REQUIRE NAME="DBI::" VERSION="1.605" />' >> $(DISTNAME).ppd
854
-	$(NOECHO) $(ECHO) '        <REQUIRE NAME="Object::Simple" VERSION="3.0616" />' >> $(DISTNAME).ppd
855
-	$(NOECHO) $(ECHO) '        <REQUIRE NAME="Test::More" />' >> $(DISTNAME).ppd
856
-	$(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i386-linux-thread-multi-5.8" />' >> $(DISTNAME).ppd
857
-	$(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
858
-	$(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
859
-	$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
860
-
861
-
862
-# --- MakeMaker pm_to_blib section:
863
-
864
-pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
865
-	$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
866
-	  lib/DBIx/Custom/Tag.pm blib/lib/DBIx/Custom/Tag.pm \
867
-	  lib/DBIx/Custom/Guide/Ja.pod blib/lib/DBIx/Custom/Guide/Ja.pod \
868
-	  lib/DBIx/Custom/Util.pm blib/lib/DBIx/Custom/Util.pm \
869
-	  lib/DBIx/Custom/Guide.pod blib/lib/DBIx/Custom/Guide.pod \
870
-	  lib/DBIx/Custom/Where.pm blib/lib/DBIx/Custom/Where.pm \
871
-	  lib/DBIx/Custom/Model.pm blib/lib/DBIx/Custom/Model.pm \
872
-	  lib/DBIx/Custom.pm blib/lib/DBIx/Custom.pm \
873
-	  lib/DBIx/Custom/Query.pm blib/lib/DBIx/Custom/Query.pm \
874
-	  lib/DBIx/Custom/Result.pm blib/lib/DBIx/Custom/Result.pm \
875
-	  lib/DBIx/Custom/QueryBuilder.pm blib/lib/DBIx/Custom/QueryBuilder.pm 
876
-	$(NOECHO) $(TOUCH) pm_to_blib
877
-
878
-
879
-# --- MakeMaker selfdocument section:
880
-
881
-
882
-# --- MakeMaker postamble section:
883
-
884
-
885
-# End.
-1202
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -1,1202 +0,0 @@
1
-=encoding utf8
2
-
3
-=head1 NAME
4
-
5
-DBIx::Custom::Guide::Ja - DBIx::Customのガイドブック
6
-
7
-=head1 ガイド
8
-
9
-L<DBIx::Custom>はSQLの実行を簡単に行うためのクラスです。
10
-L<DBIx::Class>やL<DBIx::Simple>と同じように
11
-L<DBI>のラッパクラスになっています。L<DBIx::Class>よりも簡単に、
12
-L<DBIx::Simple>よりもはるかに柔軟なことを行うことができます。
13
-
14
-L<DBIx::Custom>はO/Rマッパーではありません。O/Rマッパーは
15
-便利ですが、O/Rマッパのたくさんの文法を覚える必要があります。
16
-また、O/Rマッパによって生成されたSQLは非効率なことがありますし、
17
-複雑なSQLを生成することができないので、
18
-生のSQLを実行しなければならない場合がたくさんあります。
19
-
20
-L<DBIx::Custom>はO/Rマッパとは対照的な設計が行われています。
21
-L<DBIx::Custom>の主な目的は、SQLを尊重しつつ、L<DBI>だけでは
22
-とてもめんどうな作業を簡単にすることです。もしSQLについて
23
-多くの知識を持っているならば、L<DBIx::Custom>でそのまま
24
-活用することができます。
25
-
26
-L<DBIx::Custom>の仕組みを少しだけ説明しておきます。
27
-L<DBIx::Custom>では、パラメーターと呼ばれるものを
28
-SQLの中に埋め込むことができます。
29
-
30
-    select * from book where title = :title and author = :author;
31
-
32
-:titleや:authorがパラメーターです。このSQLは実際に実行されるときには
33
-次のようにプレースホルダに展開されます。
34
-
35
-    select * from book where title = ? and author = ?;
36
-
37
-これらの展開にはどのような意味があるのでしょうかと質問
38
-されるかもしれません。この簡単な仕組みの上に
39
-便利な機能が実装されます。それは以下のようなものです。
40
-
41
-=over 4
42
-
43
-=item 1. プレースホルダにバインドする値をハッシュリファレンスで指定
44
-
45
-L<DBI>を使うのであればプレースホルダにバインドする値は配列
46
-で指定する必要があります。
47
-
48
-    $sth->execute(@bind);
49
-
50
-L<DBIx::Custom>を利用するのであればハッシュリファレンスで指定すること
51
-できます。
52
-    
53
-    my $param = {title => 'Perl', author => 'Ken'};
54
-    $dbi->execute($sql, $param);
55
-
56
-=item 2. 値のフィルタリング
57
-
58
-L<DBIx::Custom>はフィルタリングの機能を提供します。
59
-たとえば、日付の列は、Perlで扱うときにはC<Time::Piece>などの日付オブジェクト
60
-で扱い、データベースに格納するときはデータベースの日付型に変換したい
61
-と思うのではないでしょうか。またデータベースから取り出すときは
62
-データベースの日付型から日付オブジェクトに変換したと思うのでは
63
-ないでしょうか。
64
-
65
-このようなときはフィルタ機能を使うことができます。
66
-
67
-まずフィルタを登録します。
68
-
69
-    $dbi->register_filter(
70
-        tp_to_date => sub {
71
-            ...
72
-        },
73
-        date_to_tp => sub {
74
-            ...
75
-        }
76
-    );
77
-
78
-次にテーブルの各列にこのフィルタを適用します。
79
-
80
-    $dbi->apply_filter('book',
81
-        'issue_date' => {out => 'tp_to_date', in => 'date_to_tp'}
82
-    );
83
-
84
-outはPerlからデータベースに保存する方向、inはデータベースからPerlに取得する方向です。
85
-
86
-多くのメソッドで自動的にこのフィルタが有効になります。
87
-
88
-    $dbi->insert(table => 'book', param => {issue_date => $tp});
89
-
90
-=item 3. 選択的な検索条件
91
-
92
-L<DBI>では選択的に検索条件を作成することは難しいです。
93
-
94
-たとえば、検索条件にtitleとauthorが指定された場合は次のSQLを
95
-
96
-    select * from book where title = ? and author = ?;
97
-
98
-titleだけの場合は次のSQLを
99
-
100
-    select * from book where title = ?;
101
-    
102
-authorだけの場合は次のSQLを実行した場合を考えましょう。
103
-
104
-    select * from book where author = ?;
105
-
106
-これはとても大変な作業なので、通常はL<SQL::Abstract>を動的に生成してくれる
107
-モジュールを利用することになります。
108
-
109
-L<DBIx::Custom>はさらに簡単で便利な方法を用意しています。
110
-
111
-    # Whereオブジェクト
112
-    my $where = $dbi->where;
113
-    
114
-    # 検索条件
115
-    $where->clause(
116
-        ['and', 'title = :title', 'author = :author']
117
-    );
118
-    
119
-    # 必要な列を自動的に選択するための設定
120
-    $where->param({title => 'Perl'});
121
-
122
-    # SQLへのWhere句の埋め込み
123
-    my $sql = "select * from book $where";
124
-
125
-詳しい説明は後ほど行いますが、上記のように記述すれば、
126
-L<DBIx::Custom>では選択的な検索条件を持つWhere句を生成することができます。
127
-検索条件が入れ子になった構造やorについても対応しています。
128
-
129
-=item 4. 挿入、更新、削除、選択を行うためのメソッド
130
-
131
-L<DBIx::Custom>では挿入、更新、削除、選択を行うための
132
-メソッドを提供しています。
133
-C<insert()>, C<update()>, C<delete()>,C<select()>などがあります。
134
-
135
-    my $param = {title => 'Perl', author => 'Ken'};
136
-    $dbi->insert(table => 'book', param => $param);
137
-
138
-=item 5. テーブルのためのメソッドの登録
139
-
140
-テーブルのためにメソッドを登録することができます。
141
-
142
-    $dbi->table('book')->method(
143
-        list => sub {
144
-            ...
145
-        },
146
-        something => sub {
147
-            ...
148
-        }
149
-    );
150
-
151
-メソッドの利用です。
152
-
153
-    $dbi->table('book')->list;
154
-
155
-多くのO/Rマッパではテーブルのためのクラスを作成する必要がありますが、
156
-L<DBIx::Custom>では簡単です。
157
-
158
-=back
159
-
160
-L<DBIx::Custom>はとても便利です。
161
-興味をもたれた方は、続きをご覧になってみてください。
162
-
163
-=head2 1. データベースへの接続
164
-
165
-L<DBIx::Custom>を読み込みます。
166
-
167
-    use DBIx::Custom;
168
-
169
-データベースに接続するにはC<connect()>メソッドを使用します。
170
-戻り値はL<DBIx::Custom>オブジェクトです。
171
-
172
-    my $dbi = DBIx::Custom->connect(
173
-        dsn => "dbi:mysql:database=bookstore",
174
-        user => 'ken',
175
-        password => '!LFKD%$&',
176
-        dbi_options => {mysql_enable_utf8 => 1}
177
-    );
178
-
179
-C<dsn>はデータベースシステムに応じたものである必要があります。
180
-以下はデータソースのサンプルです。
181
-
182
-B<MySQL>
183
-
184
-    "dbi:mysql:database=$database"
185
-    "dbi:mysql:database=$database;host=$hostname;port=$port"
186
-
187
-B<SQLite>
188
-
189
-    "dbi:SQLite:dbname=$database"
190
-    "dbi:SQLite:dbname=:memory:"
191
-
192
-B<PostgreSQL>
193
-
194
-    "dbi:Pg:dbname=$dbname"
195
-
196
-B<Oracle>
197
-
198
-    "dbi:Oracle:$dbname"
199
-    "dbi:Oracle:host=$host;sid=$sid"
200
-
201
-B<ODBC(Microsoft Access)>
202
-
203
-    "dbi:ODBC:driver=Microsoft Access Driver (*.mdb);dbq=hoge.mdb"
204
-
205
-B<ODBC(SQL Server)>
206
-
207
-   "dbi:ODBC:driver={SQL Server};Server=(local);database=test;Trusted_Connection=yes;AutoTranslate=No;"
208
-
209
-認証が必要な場合は、C<user>とC<password>を指定できます。
210
-
211
-L<DBIx::Custom>はL<DBI>のラッパークラスです。
212
-L<DBI>のデータベースハンドルは取得するにあhC<dbh()>を使用します。
213
-
214
-    my $dbh = $dbi->dbh;
215
-
216
-L<DBIx::Custom>ではデータベースハンドル属性にはデフォルトで次のものが設定されます。
217
-    
218
-    $dbi->dbh->{RaiseError} = 1;
219
-    $dbi->dbh->{PrintError} = 0;
220
-    $dbi->dbh->{AutoCommit} = 1;
221
-
222
-致命的なエラーが起こるとプログラムは終了します。
223
-SQLが実行されると自動的にコミットされます。
224
-
225
-=head2 2. 挿入、更新、削除、選択のためのメソッド
226
-
227
-下記のメソッドがあります。
228
-
229
-=head3 行の挿入 C<insert()>
230
-
231
-データベースに行を挿入するにはC<insert()>を使用します。
232
-
233
-    $dbi->insert(table  => 'book',
234
-                 param  => {title => 'Perl', author => 'Ken'});
235
-
236
-C<table>はテーブル名、C<param>は挿入する行のデータです。
237
-
238
-次のSQLが実行されます。
239
-
240
-    insert into (title, author) values (?, ?);
241
-
242
-=head3 データの更新 C<update()>
243
-
244
-データベースの行を更新するには、C<update()>を使用します。
245
-
246
-    $dbi->update(table  => 'book', 
247
-                 param  => {title => 'Perl', author => 'Ken'}, 
248
-                 where  => {id => 5});
249
-
250
-C<table>はテーブル名、C<param>は更新データ、C<where>は
251
-条件です。
252
-
253
-次のSQLが実行されます。
254
-
255
-    update book set title = ?, author = ?;
256
-
257
-安全のためC<where>のないupdate()を実効することはできません。
258
-もしすべての行を更新したい場合は
259
-C<update_all()>を使用してください。
260
-
261
-    $dbi->update_all(table  => 'book', 
262
-                     param  => {title => 'Perl', author => 'Ken'});
263
-
264
-=head3 データの削除 C<delete()>
265
-
266
-データベースの行を1件削除するには、C<delete()>を使用します。
267
-
268
-    $dbi->delete(table  => 'book',
269
-                 where  => {author => 'Ken'});
270
-
271
-C<table>はテーブル名、C<where>は条件です。
272
-
273
-次のSQLが実行されます。
274
-
275
-    delete from book where id = ?;
276
-
277
-安全のためC<where>のないC<delete()>を実効することはできません。
278
-もしすべての行を削除したい場合は
279
-C<delete_all()>を使用してください。
280
-
281
-    $dbi->delete_all(table  => 'book');
282
-
283
-=head3 データの選択 C<select()>
284
-
285
-行を選択するにはC<select()>を使用します。
286
-
287
-    my $result = $dbi->select(table => 'book');
288
-
289
-次のSQLが実行されます。
290
-
291
-    select * from book;
292
-
293
-戻り値はL<DBIx::Custom::Result>
294
-オブジェクトです。行をフェッチするにはC<fetch()>を使用します。
295
-
296
-    while (my $row = $result->fetch) {
297
-        my $title  = $row->[0];
298
-        my $author = $row->[1];
299
-    }
300
-
301
-L<DBIx::Custom::Result>についてはL<3. 行のフェッチ/"3. 行のフェッチ">を見てください。
302
-
303
-サンプルを続けます。
304
-
305
-    my $result = $dbi->select(
306
-        table  => 'book',
307
-        column => ['author',  'title'],
308
-        where  => {author => 'Ken'}
309
-    );
310
-
311
-C<column>は列名、C<where>は条件です。
312
-
313
-次のSQLが実行されます。
314
-
315
-    select author, title from book where author = ?;
316
-
317
-次のサンプルです。
318
-
319
-    my $result = $dbi->select(
320
-        table  => 'book',
321
-        column => ['company.name as company__name']
322
-        where  => {'book.name' => 'Perl'},
323
-        join   => ['left outer join company on book.company_id = company.id]
324
-    );
325
-
326
-C<join>でテーブルの結合を行うことができます。
327
-
328
-次のSQLが実行されます。
329
-
330
-    select company.name as company__name
331
-    from book
332
-      left outer join company on book.company_id = company.id
333
-    where book.name = ?;
334
-
335
-bookテーブルのcompany_id列とcompanyテーブルのidが左外部結合されます。
336
-次のSQLが実行されます。
337
-
338
-C<join>されるのは、C<where>やC<column>にテーブル名が含まれている
339
-場合だけであることに注意してください。
340
-次のように指定した場合は結合の必要はないと判断されjoinはされません。
341
-
342
-    my $result = $dbi->select(
343
-        table  => 'book',
344
-        where  => {'name' => 'Perl'},
345
-        join   => ['left outer join company on book.company_id = company.id]
346
-    );
347
-
348
-次のSQLが実行されます。
349
-
350
-    select * from book where book.name = ?;
351
-
352
-次のサンプルです。
353
-
354
-    my $result = $dbi->select(
355
-        table  => 'book',
356
-        where  => {author => 'Ken'},
357
-        append => 'for update',
358
-    );
359
-
360
-C<mycolumn()>やC<column()>を使用すると簡単に列名を指定できます。
361
-
362
-    my $result = $dbi->select(
363
-        table  => 'book',
364
-        column => [
365
-            $dbi->mycolumn('book' => ['name']),
366
-            $dbi->column('company' => ['id', 'name'])
367
-        ],
368
-        join   => ['left outer join company on book.company_id = company.id]
369
-    );
370
-
371
-次のSQLが実行されます。
372
-
373
-    select book.name as name,
374
-      company.id as comapny__id,
375
-      company.name as company__name
376
-    from book
377
-      left outer join company on book.company_id = company.id
378
-
379
-C<append>はSQLの末尾に追加される文字列です。
380
-
381
-次のSQLが実行されます。
382
-
383
-    select * book where author = ? for update;
384
-
385
-またC<append>は、C<select>だけでなくC<insert()>、C<update()>、C<update_all()>
386
-C<delete()>、C<delete_all()>、C<select()>で使用することもできます。
387
-
388
-=head3 SQLの実行 C<execute()>
389
-
390
-SQLを実行するにはC<execute()>を使用します。
391
-
392
-    $dbi->execute("select * from book;");
393
-
394
-パラメーターを処理してSQLを実行します。
395
-
396
-    $dbi->execute(
397
-        "select * from book title = :title and author = :author;"
398
-        param => {title => 'Perl', author => 'Ken'}
399
-    );
400
-
401
-次のSQLが実行されます。
402
-
403
-    select * from book title = ? and author = ?;
404
-
405
-プレースホルダにtitleとauthorの値が埋め込まれます。
406
-
407
-パラメーターについてはL<5. パラメーター/"5. パラメーター">を見てください。
408
-
409
-またC<execute()>のSQLの末尾にはセミコロンを置く必要はありません。
410
-
411
-    $dbi->execute('select * from book');
412
-
413
-=head2 3. 行のフェッチ
414
-
415
-C<select()>メソッドの戻り値はL<DBIx::Custom::Result>オブジェクトです。
416
-行をフェッチするためのさまざまなメソッドがあります。
417
-
418
-=head3 1行づつフェッチ(配列) C<fetch()>
419
-
420
-一行フェッチして配列のリファレンスに格納するにはC<fetch()>を使用します。
421
-
422
-    my $row = $result->fetch;
423
-
424
-以下のようにすべての行を取得することができます。
425
-
426
-    while (my $row = $result->fetch) {
427
-        my $title  = $row->[0];
428
-        my $author = $row->[1];
429
-    }
430
-
431
-=head3 最初の行だけフェッチ(配列) C<fetch_first()>
432
-
433
-一行だけフェッチして配列のリファレンスに格納するにはC<fetch_first()>
434
-を使用します。
435
-
436
-    my $row = $result->fetch_first;
437
-
438
-ステートメントハンドルのC<finish()>が実行される
439
-ので残りの行をフェッチできません。
440
-
441
-=head3 複数行を順にフェッチ(配列) C<fetch_multi()>
442
-
443
-複数行をフェッチして配列のリファレンスを要素に持つ
444
-配列のリファレンスに格納するにはC<fetch_multi()>を使用します。
445
-
446
-    while (my $rows = $result->fetch_multi(2)) {
447
-        my $title0   = $rows->[0][0];
448
-        my $author0  = $rows->[0][1];
449
-        
450
-        my $title1   = $rows->[1][0];
451
-        my $author1  = $rows->[1][1];
452
-    }
453
-
454
-取り出したい行数を引数に指定します。
455
-
456
-次のようなデータを取得できます。
457
-
458
-    [
459
-        ['Perl', 'Ken'],
460
-        ['Ruby', 'Mark']
461
-    ]
462
-
463
-=head3 すべての行をフェッチ(配列) C<fetch_all>
464
-
465
-すべての行をフェッチして配列のリファレンスを要素に持つ
466
-配列のリファレンスに格納するにはC<fetch_all()>を使用します。
467
-
468
-    my $rows = $result->fetch_all;
469
-
470
-すべての行を格納した次のようなデータを取得できます。
471
-
472
-    [
473
-        ['Perl', 'Ken'],
474
-        ['Ruby', 'Mark']
475
-    ]
476
-
477
-=head3 1行づつフェッチ(ハッシュ) C<fetch_hash()>
478
-
479
-一行フェッチしてハッシュのリファレンスに格納するにはC<fetch_hash()>を使用します。
480
-
481
-    while (my $row = $result->fetch_hash) {
482
-        my $title  = $row->{title};
483
-        my $author = $row->{author};
484
-    }
485
-
486
-=head3 最初の行だけフェッチ(ハッシュ) C<fetch_hash_first()>
487
-
488
-一行だけフェッチしてハッシュのリファレンスに格納するには
489
-C<fetch_hash_first()>を使用します。
490
-
491
-    my $row = $result->fetch_hash_first;
492
-
493
-ステートメントハンドルのC<finish()>が実行される
494
-ので残りの行をフェッチできません。
495
-
496
-=head3 複数行をフェッチ(ハッシュ) C<fetch_hash_multi()>
497
-
498
-複数行をフェッチしてハッシュのリファレンスを要素に持つ
499
-配列のリファレンスに格納するにはC<fetch_hash_multi()>
500
-を使用します。
501
-
502
-    while (my $rows = $result->fetch_hash_multi(5)) {
503
-        my $title0   = $rows->[0]{title};
504
-        my $author0  = $rows->[0]{author};
505
-        my $title1  = $rows->[1]{title};
506
-        my $author1 = $rows->[1]{author};
507
-    }
508
-
509
-引数には取り出したい行数を指定します。
510
-
511
-次のようなデータを取得できます。
512
-
513
-    [
514
-        {title => 'Perl', author => 'Ken'},
515
-        {title => 'Ruby', author => 'Mark'}
516
-    ]
517
-
518
-=head3 すべての行をフェッチ(ハッシュ) C<fetch_hash_all()>
519
-
520
-すべての行をフェッチしてハッシュのリファレンスを要素に持つ
521
-配列のリファレンスに格納するにはC<fetch_hash_all()>
522
-を使用します。
523
-
524
-    my $rows = $result->fetch_hash_all;
525
-
526
-次のようなデータを取得できます。
527
-
528
-    [
529
-        {title => 'Perl', author => 'Ken'},
530
-        {title => 'Ruby', author => 'Mark'}
531
-    ]
532
-
533
-=head3 ステートメントハンドル C<sth()>
534
-
535
-ステートメントハンドル取得したい場合は
536
-<sth()>を使用します。
537
-
538
-    my $sth = $result->sth;
539
-
540
-=head2 4. フィルタリング
541
-
542
-L<DBIx::Custom>は値のフィルタリング機能を提供します。
543
-
544
-たとえば、データをデータベースに登録するときは
545
-L<Time::Piece>オブジェクトからデータベースの日付のフォーマットに、
546
-データベースからデータを取得するときは、
547
-データベースの日付のフォーマットからL<Time::Piece>オブジェクト
548
-に変換を行いたいと思うことでしょう。
549
-
550
-=head3 フィルタの登録 C<register_filter()>
551
-
552
-フィルタを登録するにはC<register_filter()>を使用します。
553
-
554
-    $dbi->register_filter(
555
-        # Time::Piece object to DATE format
556
-        tp_to_date => sub {
557
-            my $date = shift;
558
-
559
-            return '0000-00-00' unless $tp;
560
-            return $tp->strftime('%Y-%m-%d');
561
-        },
562
-        
563
-        # DATE to Time::Piece object
564
-        date_to_tp => sub {
565
-            my $date = shift;
566
-
567
-            return if $date eq '0000-00-00';
568
-            return Time::Piece->strptime($date, '%Y-%m-%d');
569
-        },
570
-    );
571
-
572
-登録したフィルタはC<apply_filter()>などで利用することができます。
573
-
574
-=head3 フィルタの適用 C<apply_filter()>
575
-
576
-作成したフィルタを適用するには、C<apply_filter()>を使用します。
577
-
578
-    $dbi->apply_filter('book',
579
-        issue_date => {out => 'tp_to_date', in => 'date_to_tp'},
580
-        first_issue_date => {out => 'tp_to_date', in => 'date_to_tp'}
581
-    );
582
-
583
-第一引数はテーブル名です。第1引数より後の引数は、列名とフィルタルールのペアを記述します。
584
-フィルタルールのoutには、データベースにデータを送信するときに適用するフィルタを、
585
-フィルタルールのinには、データベースからデータを取得するときに適用するフィルタを
586
-記述します。
587
-
588
-フィルタとしてコードリファレンスを
589
-指定することもできます。
590
-
591
-    issue_date => {out => sub { ... }, in => sub { ... }}
592
-
593
-適用されたフィルタはC<insert()>、C<update()>、C<update_all()>、C<delete()>、
594
-C<delete_all()>、C<select()>で有効になります。
595
-
596
-    my $tp = Time::Piece->strptime('2010/10/14', '%Y/%m/%d');
597
-    my $result = $dbi->select(table => 'book', where => {issu_date => $tp});
598
-
599
-データベースにデータが送信されるときに、L<Time::Piece>オブジェクトは
600
-データベースの日付のフォーマット「2010-10-14」に変換されます。
601
-
602
-データをフェッチするときには、データベースの日付のフォーマットは
603
-L<Time::Piece>オブジェクトに変換されます。
604
-
605
-    my $row = $resutl->fetch_hash_first;
606
-    my $tp = $row->{issue_date};
607
-
608
-テーブル名を含む列名を使用することもできます。
609
-
610
-    $dbi->select(
611
-        table => 'book',
612
-        where => {'book.title' => 'Perl', 'book.author' => 'Ken'}
613
-    );
614
-
615
-フェッチを行う場合に"TABLE__COLUMN"という名前を使用した場合もフィルタは
616
-有効になります。
617
-
618
-    my $result = $dbi->execute(
619
-       "select issue_date as book__issue_date from book");
620
-
621
-C<in>フィルタの後に実行されるC<end>フィルタを適用することもできます。
622
-
623
-    $dbi->apply_filter('book',
624
-        issue_date => {out => 'tp_to_date', in => 'date_to_tp',
625
-                       end => 'tp_to_displaydate'},
626
-    );
627
-
628
-=head3 個別のフィルタ C<filter>
629
-
630
-個別にフィルタを適用することもできます。
631
-個別のフィルタはC<apply_filter()>で適用したフィルタを上書きます。
632
-
633
-データを送信する場合に個別のフィルタを適用するには、C<filter>オプションを使用します。
634
-このオプションはC<insert()>、C<update()>、
635
-C<update_all()>、C<delete()>、C<delete_all()>、C<select()>、C<execute()>
636
-で使用することができます。
637
-
638
-    $dbi->insert(
639
-        table => 'book',
640
-        param => {issue_date => $tp, first_issue_date => $tp},
641
-        filter => {issue_date => 'tp_to_date', first_issue_date => 'tp_to_date'}
642
-    );
643
-
644
-C<execute()>の例を示します。
645
-
646
-my $sql = <<"EOS";
647
-select YEAR(issue_date) as issue_year
648
-from book
649
-where YEAR(issue_date) = {? issue_year}
650
-EOS
651
-   
652
-    my $result = $dbi->execute(
653
-        $sql,
654
-        param => {issue_year => '2010'},
655
-        filter => {issue_year => 'tp_to_year'}
656
-    );
657
-
658
-行をフェッチするときにも個別のフィルタを適用することができます。
659
-C<DBIx::Custom::Result>のC<filter()>を使用します。
660
-
661
-    $result->filter(issue_year => 'year_to_tp');
662
-
663
-C<remove_filter()>でフィルタを取り除くこともできます。
664
-
665
-    $result->remove_filter
666
-
667
-=head3 最後のフィルタリング : C<end_filter()>
668
-
669
-最後にもうひとつフィルタを追加することができます。
670
-最終的な出力を作成する場合に便利です。
671
-最後のフィルタを登録するにはC<end_filter()>を使用します。
672
-
673
-    $result->end_filter(issue_date => sub {
674
-        my $tp = shift;
675
-        
676
-        return '' unless $tp;
677
-        return $tp->strftime('%Y/%m/%d %h:%m:%s (%a)');
678
-    });
679
-
680
-この例ではL<Time::Piece>オブジェクトを読みやすい書式に変換しています。
681
-
682
-最後のフィルタリングをC<remove_filter()>で取り除くこともできます。
683
-
684
-$result->remove_end_filter;
685
-
686
-=head3 フィルタの適用の自動化 C<each_column()>
687
-
688
-日付型の列は自動的にフィルタを適用できると便利です。
689
-列のすべての情報を処理するためのC<each_column()>を利用することができます。
690
-
691
-    $dbi->each_column(
692
-        sub {
693
-            my ($self, $table, $column, $info) = @_;
694
-            
695
-            my $type = $info->{TYPE_NAME};
696
-            
697
-            my $filter = $type eq 'DATE'     ? {out => 'tp_to_date', in => 'date_to_tp'}
698
-                       : $type eq 'DATETIME' ? {out => 'tp_to_datetime', in => 'datetime_to_tp'}
699
-                                             : undef;
700
-            
701
-            $self->apply_filter($table, $column, $filter)
702
-              if $filter;
703
-        }
704
-    );
705
-
706
-each_columnはコールバックを受け取ります。コールバックの引数は
707
-L<DBIx::Custom>オブジェクト、テーブル名、列名、列の情報です。
708
-列の型名の情報をもとに自動的に、フィルタを適用しています。
709
-
710
-=head2 5. パラメーター
711
-
712
-=head3 パラメーターの基本
713
-
714
-SQLの中にパラメーターを埋め込むことができます。
715
-
716
-    select * from book where title = :title and author like :author;
717
-
718
-:titleと:authorの部分がパラメーターです。
719
-    
720
-パラメーターはSQLが実行される前に展開されます。
721
-
722
-    select * from book where title = ? and author like ?;
723
-
724
-パラメーターを含むSQLを実行するにはC<execute()>を使用します。
725
-
726
-    my $sql = "select * from book where author = :author and title like :title;"
727
-    $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'});
728
-
729
-C<param>オプションを使って、プレースホルダに埋め込みたい値を
730
-ハッシュリファレンスで指定することができます。
731
-
732
-C<execute()>においてもC<filter>を指定することができます。
733
-
734
-    $dbi->execute($sql, param => {title => 'Perl', author => '%Ken%'}
735
-                  filter => {title => 'to_something');
736
-
737
-C<execute>ではC<apply_filter()>で適用されたフィルタ
738
-は有効ではないということに注意してください。
739
-C<apply_filter()>で適用されたフィルタを有効にするには、
740
-C<table>オプションを利用します。
741
-
742
-    $dbi->execute($sql, table => ['author', 'book']);
743
-
744
-後ろで適用したフィルタのほうが優先順位が高くなります。
745
-
746
-=head3 同名の列の扱い
747
-
748
-同名の列を含むパラメーターがある場合でも大丈夫です。
749
-二つの日付で比較しなければならない場合を
750
-考えて見ましょう。
751
-
752
-    my $sql = "select * from table where date > :date and date < :date;";
753
-
754
-このような場合はパラメータの値を配列のリファレンスで指定します。
755
-
756
-    my $dbi->execute($sql, param => {date => ['2010-10-01', '2012-02-10']});
757
-
758
-=head2 6. Where句の動的な生成
759
-
760
-=head3 Where句の動的な生成 where()
761
-
762
-複数の検索条件を指定して、検索を行いたい場合があります。
763
-次の3つのケースのwhere句を考えてみましょう。
764
-
765
-titleの値だけで検索したい場合
766
-
767
-    where title = :title
768
-
769
-authorの値だけで検索したい場合
770
-
771
-    where author = :author
772
-
773
-titleとauthorの両方の値で検索したい場合
774
-
775
-    where title = :title and author = :author
776
-
777
-L<DBIx::Custom>では動的なWhere句の生成をサポートしています。
778
-まずC<where()>でL<DBIx::Custom::Where>オブジェクトを生成します。
779
-
780
-    my $where = $dbi->where;
781
-
782
-次にC<clause()>を使用してwhere句を記述します。
783
-
784
-    $where->clause(
785
-        ['and', 'title = :title', 'author = :author']
786
-    );
787
-
788
-clauseの指定方法は次のようになります。
789
-
790
-    ['or' あるいは 'and', パラメーター1, パラメーター2, パラメーター3]
791
-
792
-第一引数にはorあるいはandを指定します。第二引数以降には
793
-検索条件をパラメーターを使って記述します。
794
-
795
-C<clause>の指定は入れ子にすることもでき、さらに複雑な条件
796
-を記述することもできます。
797
-
798
-    ['and', 
799
-      'title = :title', 
800
-      ['or', 'author = :author', 'date like :date']
801
-    ]
802
-
803
-これは "title = :title and ( author = :author or date like :date )" 意味しています。
804
-
805
-C<clause>を設定した後にC<param>にパラメータを指定します。
806
-    
807
-    $where->param({title => 'Perl'});
808
-
809
-この例ではtitleだけがパラメータに含まれています。
810
-
811
-この後C<to_string()>を実行すると$paramに含まれるパラメータを満たす
812
-where句を生成することができます。
813
-
814
-    my $where_clause = $where->to_string;
815
-
816
-パラメータはtitleだけですので、次のようなwhere句が生成されます。
817
-
818
-    where title = :title
819
-
820
-またL<DBIx::Custom>は文字列の評価をオーバーロードして、C<to_string()>
821
-を呼び出すようにしていますので、次のようにしてwhere句を生成することも
822
-できます。
823
-
824
-    my $where_clause = "$where";
825
-
826
-これはSQLの中にwhere句を埋め込むときにとても役立つ機能です。
827
-
828
-=head3 同一の列名を含む場合
829
-
830
-パラメーターの中に同一の名前を持つものが存在した場合でも動的に
831
-where句を作成することができます。
832
-
833
-たとえば、パラメータとして開始日付と終了日付を受け取ったことを
834
-考えてみてください。
835
-
836
-    my $param = {start_date => '2010-11-15', end_date => '2011-11-21'};
837
-
838
-この場合はパラメータの値を配列のリファレンスにしてください。
839
-
840
-    my $p = {date => ['2010-11-15', '2011-11-21']};
841
-
842
-同名の列を含むパラメーターに順番に埋め込むことができます。
843
-
844
-    $where->clause(
845
-        ['and', 'date > :date', 'date < :date']
846
-    );
847
-    $where->param($p);
848
-
849
-また開始日付が存在しない場合は次のようなデータを作成します。
850
-
851
-    my $p = {date => [$dbi->not_exists, '2011-11-21']};
852
-
853
-C<not_exists()>でDBIx::Custom::NotExistsオブジェクトを
854
-取得できます。これは対応する値が存在しないことを示すためのものです。
855
-
856
-また終了日付が存在しない場合は次のようなデータを作成します。
857
-
858
-    my $p = {date => ['2010-11-15']};
859
-
860
-どちらも存在しない場合は次のようなデータを作成します。
861
-
862
-    my $p = {date => []};
863
-
864
-少し難しいので一番簡単に作成できるロジックを示しておきます。
865
-
866
-    my @date;
867
-    push @date, exists $param->{start_date} ? $param->{start_date}
868
-                                            : $dbi->not_exists;
869
-    push @date, $param->{end_date} if exists $param->{end_date};
870
-    my $p = {date => \@date};
871
-
872
-=head3 C<select()>との連携
873
-
874
-L<DBIx::Custom::Where>オブジェクトは
875
-C<select()>のC<where>に直接渡すことが
876
-できます。
877
-    
878
-    my $where = $dbi->where;
879
-    $where->clause(...);
880
-    $where->param($param);
881
-    my $result = $dbi->select(table => 'book', where => $where);
882
-
883
-あるいはC<update()>、C<delete()>のwhereに指定することも可能です。
884
-
885
-=head3 C<execute()>との連携
886
-
887
-C<execute()>との連携です。SQLを作成するときに埋め込むことができます。
888
-
889
-
890
-    my $where = $dbi->where;
891
-    $where->clause(...);
892
-    $where->param($param);
893
-
894
-    my $sql = <<"EOS";
895
-    select * from book;
896
-    $where
897
-    EOS
898
-
899
-    $dbi->execute($sql, param => $param);
900
-
901
-=head2 7. モデル
902
-
903
-=head3 モデル
904
-
905
-ソースコードの見通しをよくするために、
906
-L<DBIx::Custom::Model>を継承してモデルを作成することができます。
907
-
908
-まず最初にモデルの元になるクラスを<DBIx::Custom::Model>
909
-を継承して作成します。
910
-
911
-    package MyModel;
912
-    
913
-    use base 'DBIx::Custom::Model';
914
-
915
-次に個々のモデルクラスを作成します。
916
-
917
-MyModel::book
918
-
919
-    package MyModel::book;
920
-    
921
-    use base 'MyModel';
922
-    
923
-    sub insert { ... }
924
-    sub list { ... }
925
-
926
-MyModel::company
927
-
928
-    package MyModel::company;
929
-    
930
-    use base 'MyModel';
931
-    
932
-    sub insert { ... }
933
-    sub list { ... }
934
-
935
-このように作成したモジュールを次のように配置してください。
936
-
937
-    MyModel.pm
938
-    MyModel / book.pm
939
-            / company.pm
940
-
941
-このように作成したモデルはC<include_model()>で取り込むことができます。
942
-
943
-    $dbi->include_model('MyModel');
944
-
945
-第一引数は、モデルの名前空間になります。
946
-
947
-モデルは次のように利用することができます。
948
-
949
-    my $result = $dbi->model('book')->list;
950
-
951
-モデルではテーブル名を指定することなしに
952
-C<insert()>, C<update()>, C<update_all()>,
953
-C<delete()>, C<delete_all()>, C<select()>などのメソッドを
954
-利用できます。
955
-
956
-    $dbi->model('book')->insert(param => $param);
957
-
958
-またモデルクラスでC<primary_key>の設定がなされていれば、
959
-プライマリキーを指定することなしに
960
-C<insert_at>, C<update_at()>, C<delete_at()>, C<select_at()>のメソッドを
961
-利用できます。
962
-
963
-    $dbi->model('book')->delete_at(where => 123);
964
-
965
-モデルはL<DBIx::Custom::Model>です。
966
-
967
-必要であれば、C<table()>でテーブル名を取得することができます。
968
-
969
-    my $table = $model->table;
970
-
971
-L<DBIx::Custom>オブジェクトを取得することもできます。
972
-
973
-    my $dbi = $model->dbi;
974
-
975
-L<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すこともできます。
976
-
977
-    # DBIx::Custom method
978
-    $model->execute($sql);
979
-    
980
-    # DBI method
981
-    $model->begin_work;
982
-    $model->commit;
983
-
984
-すべてのモデル名を取得したい場合はC<models()>のキーを取得してください。
985
-
986
-    my @models = keys %{$self->models};
987
-
988
-モデルにはプライマリーキーを設定することもできます。
989
-
990
-   $model->primary_key(['id', 'number_id']);
991
-
992
-ここで設定したプライマリーキーはC<insert_at>, C<update_at()>, C<delete_at()>,
993
-C<select_at()>で利用されます。
994
-
995
-C<filter>でC<apply_filter()>で適用されるフィルタを定義しておくこともできます。
996
-
997
-    $model->filter({
998
-        title  => {out => ..., in => ..., end => ...},
999
-        author => {out => ..., in => ..., end => ...}
1000
-    });
1001
-
1002
-このフィルタはC<include_model()>を呼び出したときに自動的に適用されます。
1003
-
1004
-モデルには列名を設定することもできます。
1005
-
1006
-    $model->columns(['id', 'number_id']);
1007
-
1008
-列名はC<setup_model()>で自動的に設定することができます。
1009
-このメソッドはC<include_model()>の後で呼び出してください。
1010
-
1011
-    $dbi->setup_model;
1012
-
1013
-モデルにはC<join>を設定することもできます。
1014
-
1015
-    $model->join(['left outer join company on book.company_id = company.id']);
1016
-
1017
-ここで設定したC<join>はC<select()>, C<select_at()>で利用されます。
1018
-
1019
-
1020
-=head2 クラス名、モデル名、テーブル名
1021
-
1022
-クラス名とモデル名とテーブル名の関係について書いておきます。
1023
-通常はクラス名がモデル名に利用され、テーブル名にはモデル名が利用されます。
1024
-
1025
-    クラス名     モデル名              テーブル名
1026
-    book         (クラス名) -> book    (モデル名) -> book
1027
-
1028
-モデル名を変更することもできます。
1029
-
1030
-    package MyModel::book;
1031
-    
1032
-    use base 'MyModel';
1033
-    
1034
-    __PACAKGE__->attr(name => 'book_model');
1035
-
1036
-    クラス名     モデル名      テーブル名
1037
-    book         book_model    (モデル名) -> book_model
1038
-
1039
-モデル名というのは、L<DBIx::Custom>のL<model()>で利用される名前です。
1040
-
1041
-    $dbi->model('book_model');
1042
-
1043
-テーブル名を変更することもできます。
1044
-
1045
-    package MyModel::book;
1046
-
1047
-    use base 'MyModel';
1048
-    
1049
-    __PACAKGE__->attr(table => 'book_table');
1050
-    
1051
-    クラス名     モデル名              テーブル名
1052
-    book         (クラス名) -> book    book_table
1053
-
1054
-テーブル名というのは、実際にアクセスされるテーブルです。
1055
-
1056
-    $dbi->model('book')->insert(...); # book_tableにアクセス
1057
-
1058
-=head2 列名の自動生成 : mycolumn(), column()
1059
-
1060
-列名の節を自動生成するにはC<mycolumn()>を使用します。
1061
-C<table>とC<columns>の値が利用されます。
1062
-
1063
-    my $column_clause = $model->mycolumn;
1064
-
1065
-C<table>の値が'book'、C<column>の値が['id', 'name']で
1066
-あった場合は次のような列名の節が生成されます。
1067
-
1068
-    book.id as id, book.name as name
1069
-
1070
-このように列名の節を生成するのは、列名のあいまいさをなくすためです。
1071
-
1072
-また他のテーブルの列名から列名を自動生成することもできます。
1073
-
1074
-    my $column_clause = $model->column('company');
1075
-
1076
-モデルのC<comparny>のC<column>の値が['id', 'name']で
1077
-あった場合は次のような列名の節が生成されます。
1078
-
1079
-    company.id as company__id, company.name as company__name
1080
-
1081
-=head2 モデルのサンプル
1082
-
1083
-モデルのサンプルです。
1084
-
1085
-    package MyDBI;
1086
-    
1087
-    use base 'DBIx::Custom';
1088
-    
1089
-    sub connect {
1090
-        my $self = shift->SUPER::connect(@_);
1091
-        
1092
-        $self->include_model(
1093
-            MyModel => [
1094
-                'book',
1095
-                'company'
1096
-            ]
1097
-        );
1098
-    }
1099
-    
1100
-    package MyModel::book;
1101
-    use base 'DBIx::Custom::Model';
1102
-    
1103
-    __PACKAGE__->attr('primary_key' => sub { ['id'] };
1104
-    
1105
-    sub insert { ... }
1106
-    sub list { ... }
1107
-    
1108
-    package MyModel::company;
1109
-    use base 'DBIx::Custom::Model';
1110
-
1111
-    __PACKAGE__->attr('primary_key' => sub { ['id'] };
1112
-    
1113
-    sub insert { ... }
1114
-    sub list { ... }
1115
-
1116
-=head2 8. パフォーマンスの改善
1117
-
1118
-=head3 クエリの作成
1119
-
1120
-パフォーマンスが得られない場合はC<query>オプションを使って
1121
-クエリを作成してみてください。
1122
-
1123
-    my $params = [
1124
-        {title => 'Perl', author => 'Ken'},
1125
-        {title => 'Good day', author => 'Tom'}
1126
-    ]
1127
-    my $query = $dbi->insert(table => 'book', param => $params->[0], query => 1);
1128
-
1129
-戻り値はL<DBIx::Custom::Query>オブジェクトです。
1130
-作成したクエリはC<execute()>で実行することができます。
1131
-
1132
-    foreach my $param (@$params) {
1133
-        $dbi->execute($query, $param);
1134
-    }
1135
-
1136
-ステートメントハンドルが再利用されるので、パフォーマンスが
1137
-改善されます。
1138
-C<query>オプションはC<insert()>, C<update()>, C<update_all()>,
1139
-C<delete()>, C<delete_all()>で利用することができます.
1140
-
1141
-クエリを作成するメソッドに渡すパラメータと
1142
-C<execute()>に渡すパラメータの個数は同じでなければならない
1143
-ことに注意してください。
1144
-
1145
-C<create_query()>を使って任意のSQLのクエリを作成
1146
-することもできます。
1147
-
1148
-    my $query = $dbi->create_query(
1149
-        "insert into book {insert_param title author};";
1150
-    );
1151
-
1152
-
1153
-=head2 9. その他の機能
1154
-
1155
-=head3 メソッドの登録
1156
-
1157
-L<DBIx::Custom>オブジェクトにメソッドを追加することができます。
1158
-C<method()>を使用します。
1159
-
1160
-    $dbi->method(
1161
-        update_or_insert => sub {
1162
-            my $self = shift;
1163
-            # something
1164
-        },
1165
-        find_or_create   => sub {
1166
-            my $self = shift;
1167
-            # something
1168
-        }
1169
-    );
1170
-
1171
-これらのメソッドは
1172
-L<DBIx::Custom>オブジェクトから呼び出すことができます。
1173
-
1174
-    $dbi->update_or_insert;
1175
-    $dbi->find_or_create;
1176
-
1177
-=head3 結果クラスの変更
1178
-
1179
-結果クラスを変更することができます。
1180
-デフォルトはL<DBIx::Custom::Result>です。
1181
-
1182
-    package MyResult;
1183
-    use base 'DBIx::Custom::Result';
1184
-    
1185
-    sub some_method { ... }
1186
-
1187
-    1;
1188
-    
1189
-    package main;
1190
-    
1191
-    use MyResult;
1192
-    
1193
-    my $dbi = DBIx::Custom->connect(...);
1194
-    $dbi->result_class('MyResult');
1195
-
1196
-=head1 サンプル
1197
-
1198
-以下のWikiでサンプルを見ることができます。
1199
-
1200
-L<DBIx::Custom Wiki|https://github.com/yuki-kimoto/DBIx-Custom/wiki>
1201
-
1202
-=cut
-63
xt/dbix-connector.t
... ...
@@ -1,63 +0,0 @@
1
-use Test::More 'no_plan';
2
-
3
-{
4
-     package MyDBI1;
5
-     
6
-     use base 'DBIx::Custom';
7
-     
8
-     use DBIx::Connector;
9
-     
10
-     __PACKAGE__->attr(connection_manager => sub {
11
-         my $self = shift;
12
-         
13
-         my $cm = DBIx::Connector->new(
14
-             $self->data_source,
15
-             $self->user,
16
-             $self->password,
17
-             {
18
-                 %{$self->default_dbi_option},
19
-                 %{$self->dbi_option}
20
-             }
21
-         );
22
-         
23
-         return $cm
24
-     });
25
-     
26
-     sub dbh { shift->connection_manager->dbh }
27
-     
28
-     sub connect {
29
-         my $self = shift->SUPER::new(@_);
30
-         
31
-         return $self;
32
-     }
33
-}
34
-
35
-# user password database
36
-our ($USER, $PASSWORD, $DATABASE) = connect_info();
37
-
38
-# Functions for tests
39
-sub connect_info {
40
-    my $file = 'password.tmp';
41
-    open my $fh, '<', $file
42
-      or return;
43
-    
44
-    my ($user, $password, $database) = split(/\s/, (<$fh>)[0]);
45
-    
46
-    close $fh;
47
-    
48
-    return ($user, $password, $database);
49
-}
50
-
51
-my $dbi = MyDBI1->connect(
52
-    user => $USER, password => $PASSWORD,
53
-    data_source => "dbi:mysql:database=$DATABASE");
54
-
55
-$dbi->delete_all(table => 'table1');
56
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
57
-is_deeply($dbi->select(table => 'table1')->fetch_hash_all, [{key1 => 1, key2 => 2}]);
58
-
59
-
60
-
61
-
62
-
63
-
-10
xt/time-piece.t
... ...
@@ -1,10 +0,0 @@
1
-use Test::More 'no_plan';
2
-
3
-use strict;
4
-use warnings;
5
-use DBIx::Custom;
6
-
7
-my $dbi = DBIx::Custom->connect('dbi:SQLite:dbname=:memory:');
8
-
9
-
10
-