1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
#-*- perl -*-
#
# Copyright (C) 2000,2001 Ken'ichi Fukamachi
# All rights reserved.
#
# $FML: toymodel.pm,v 1.3 2001/08/05 12:07:23 fukachan Exp $
#
package IO::Adapter::SQL::toymodel;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
use Carp;
=head1 NAME
IO::Adapter::SQL::toymodel - SQL statement dependent on toymodel
=head1 SYNOPSIS
use IO::Adapter::SQL::toymodel;
$obj = new IO::Adapter::SQL::toymodel;
=head1 DESCRIPTION
SQL::Schema modules hold SQL statement dependent on each specific
model.
=head1 METHODS
=cut
sub add
{
my ($self, $addr) = @_;
print STDERR "add( $addr )\n" if $ENV{'debug'};
my $query = $self->_build_sql_query({
query => 'add',
address => $addr,
});
$self->execute({ query => $query });
}
sub delete
{
my ($self, $addr) = @_;
print STDERR "delete( $addr )\n" if $ENV{'debug'};
my $query = $self->_build_sql_query({
query => 'delete',
address => $addr,
});
$self->execute({ query => $query });
}
sub fetch_all
{
my ($self, $args) = @_;
my $query = $self->_build_sql_query({
query => 'get_next_value',
});
$self->execute({ query => $query });
}
sub md_find
{
my ($self, $regexp, $args) = @_;
my $case_sensitive = $args->{ case_sensitive } ? 1 : 0;
my $show_all = $args->{ all } ? 1 : 0;
my (@buf, $x);
my $query = $self->_build_sql_query({
query => 'search',
regexp => $regexp,
});
$self->execute({ query => $query });
if (defined $self->{ _res }) {
my ($row);
while (defined ($row = $self->{ _res }->fetchrow_arrayref)) {
$x = join(" ", @$row);
if ($show_all) {
if ($case_sensitive) {
push(@buf, $x) if $x =~ /$regexp/;
}
else {
push(@buf, $x) if $x =~ /$regexp/i;
}
}
else {
if ($case_sensitive) {
last if $x =~ /$regexp/;
}
else {
last if $x =~ /$regexp/i;
}
}
}
}
else {
return undef;
}
$show_all ? \@buf : $x;
}
# Descriptions:
#
# $args = {
# query => 'add',
# address => 'rudo@nuinui.net',
# _params => {
# ml_name => 'elena',
# file => 'actives',
# },
# }
#
# Arguments: $self $args
# Side Effects:
# Return Value: none
sub _build_sql_query
{
my ($self, $args) = @_;
my $query = $args->{ query };
my $address = $args->{ address };
# inherit parameter from object
my $ml_name = $self->{ _params }->{ ml_name };
my $file = $self->{ _params }->{ file };
my $table = $self->{ _table };
print STDERR "_build_sql_query( query=$query )\n" if $ENV{'debug'};
if ($query eq 'add') {
"insert into $table values ('$ml_name', '$file', '$address', 0, 0)";
}
elsif ($query eq 'delete') {
"delete from $table where ml='$ml_name' and address='$address'";
}
elsif ($query eq 'search') {
my $p = $args->{ 'regexp' };
"select address from $table where address like '\%${p}\%'";
}
else {
"select address from $table where ml='$ml_name' and file='$file'";
}
}
1;
|