zengin_lite 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,358 @@
1
+ <!DOCTYPE html>
2
+ <html >
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
+ <meta charset="utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <title>Method List</title>
19
+ <base id="base_target" target="_parent" />
20
+ </head>
21
+ <body>
22
+ <div id="content">
23
+ <div class="fixed_header">
24
+ <h1 id="full_list_header">Method List</h1>
25
+ <div id="full_list_nav">
26
+
27
+ <span><a target="_self" href="class_list.html">
28
+ Classes
29
+ </a></span>
30
+
31
+ <span><a target="_self" href="method_list.html">
32
+ Methods
33
+ </a></span>
34
+
35
+ <span><a target="_self" href="file_list.html">
36
+ Files
37
+ </a></span>
38
+
39
+ </div>
40
+
41
+ <div id="search">
42
+ <label for="search-class">Search:</label>
43
+ <input id="search-class" type="text" />
44
+ </div>
45
+ </div>
46
+
47
+ <ul id="full_list" class="method">
48
+
49
+
50
+ <li class="odd ">
51
+ <div class="item">
52
+ <span class='object_link'><a href="ZenginLite/Bank.html#[]-class_method" title="ZenginLite::Bank.[] (method)">[]</a></span>
53
+ <small>ZenginLite::Bank</small>
54
+ </div>
55
+ </li>
56
+
57
+
58
+ <li class="even ">
59
+ <div class="item">
60
+ <span class='object_link'><a href="ZenginLite/Bank.html#all-class_method" title="ZenginLite::Bank.all (method)">all</a></span>
61
+ <small>ZenginLite::Bank</small>
62
+ </div>
63
+ </li>
64
+
65
+
66
+ <li class="odd ">
67
+ <div class="item">
68
+ <span class='object_link'><a href="ZenginLite/Branch.html#bank-instance_method" title="ZenginLite::Branch#bank (method)">#bank</a></span>
69
+ <small>ZenginLite::Branch</small>
70
+ </div>
71
+ </li>
72
+
73
+
74
+ <li class="even ">
75
+ <div class="item">
76
+ <span class='object_link'><a href="ZenginLite.html#bank-class_method" title="ZenginLite.bank (method)">bank</a></span>
77
+ <small>ZenginLite</small>
78
+ </div>
79
+ </li>
80
+
81
+
82
+ <li class="odd ">
83
+ <div class="item">
84
+ <span class='object_link'><a href="ZenginLite/Branch.html#bank_code-instance_method" title="ZenginLite::Branch#bank_code (method)">#bank_code</a></span>
85
+ <small>ZenginLite::Branch</small>
86
+ </div>
87
+ </li>
88
+
89
+
90
+ <li class="even ">
91
+ <div class="item">
92
+ <span class='object_link'><a href="ZenginLite/Bank.html#branch-instance_method" title="ZenginLite::Bank#branch (method)">#branch</a></span>
93
+ <small>ZenginLite::Bank</small>
94
+ </div>
95
+ </li>
96
+
97
+
98
+ <li class="odd ">
99
+ <div class="item">
100
+ <span class='object_link'><a href="ZenginLite.html#branch-class_method" title="ZenginLite.branch (method)">branch</a></span>
101
+ <small>ZenginLite</small>
102
+ </div>
103
+ </li>
104
+
105
+
106
+ <li class="even ">
107
+ <div class="item">
108
+ <span class='object_link'><a href="ZenginLite/Bank.html#branches-instance_method" title="ZenginLite::Bank#branches (method)">#branches</a></span>
109
+ <small>ZenginLite::Bank</small>
110
+ </div>
111
+ </li>
112
+
113
+
114
+ <li class="odd ">
115
+ <div class="item">
116
+ <span class='object_link'><a href="ZenginLite/Database.html#close-class_method" title="ZenginLite::Database.close (method)">close</a></span>
117
+ <small>ZenginLite::Database</small>
118
+ </div>
119
+ </li>
120
+
121
+
122
+ <li class="even ">
123
+ <div class="item">
124
+ <span class='object_link'><a href="ZenginLite/Bank.html#code-instance_method" title="ZenginLite::Bank#code (method)">#code</a></span>
125
+ <small>ZenginLite::Bank</small>
126
+ </div>
127
+ </li>
128
+
129
+
130
+ <li class="odd ">
131
+ <div class="item">
132
+ <span class='object_link'><a href="ZenginLite/Branch.html#code-instance_method" title="ZenginLite::Branch#code (method)">#code</a></span>
133
+ <small>ZenginLite::Branch</small>
134
+ </div>
135
+ </li>
136
+
137
+
138
+ <li class="even ">
139
+ <div class="item">
140
+ <span class='object_link'><a href="ZenginLite/Database.html#connection-class_method" title="ZenginLite::Database.connection (method)">connection</a></span>
141
+ <small>ZenginLite::Database</small>
142
+ </div>
143
+ </li>
144
+
145
+
146
+ <li class="odd ">
147
+ <div class="item">
148
+ <span class='object_link'><a href="ZenginLite/Database.html#each_bank-class_method" title="ZenginLite::Database.each_bank (method)">each_bank</a></span>
149
+ <small>ZenginLite::Database</small>
150
+ </div>
151
+ </li>
152
+
153
+
154
+ <li class="even ">
155
+ <div class="item">
156
+ <span class='object_link'><a href="ZenginLite.html#each_bank-class_method" title="ZenginLite.each_bank (method)">each_bank</a></span>
157
+ <small>ZenginLite</small>
158
+ </div>
159
+ </li>
160
+
161
+
162
+ <li class="odd ">
163
+ <div class="item">
164
+ <span class='object_link'><a href="ZenginLite/Database.html#find_bank-class_method" title="ZenginLite::Database.find_bank (method)">find_bank</a></span>
165
+ <small>ZenginLite::Database</small>
166
+ </div>
167
+ </li>
168
+
169
+
170
+ <li class="even ">
171
+ <div class="item">
172
+ <span class='object_link'><a href="ZenginLite/Database.html#find_branch-class_method" title="ZenginLite::Database.find_branch (method)">find_branch</a></span>
173
+ <small>ZenginLite::Database</small>
174
+ </div>
175
+ </li>
176
+
177
+
178
+ <li class="odd ">
179
+ <div class="item">
180
+ <span class='object_link'><a href="ZenginLite/Database.html#find_branches-class_method" title="ZenginLite::Database.find_branches (method)">find_branches</a></span>
181
+ <small>ZenginLite::Database</small>
182
+ </div>
183
+ </li>
184
+
185
+
186
+ <li class="even ">
187
+ <div class="item">
188
+ <span class='object_link'><a href="ZenginLite/Bank.html#from_row-class_method" title="ZenginLite::Bank.from_row (method)">from_row</a></span>
189
+ <small>ZenginLite::Bank</small>
190
+ </div>
191
+ </li>
192
+
193
+
194
+ <li class="odd ">
195
+ <div class="item">
196
+ <span class='object_link'><a href="ZenginLite/Branch.html#from_row-class_method" title="ZenginLite::Branch.from_row (method)">from_row</a></span>
197
+ <small>ZenginLite::Branch</small>
198
+ </div>
199
+ </li>
200
+
201
+
202
+ <li class="even ">
203
+ <div class="item">
204
+ <span class='object_link'><a href="ZenginLite/Branch.html#hira-instance_method" title="ZenginLite::Branch#hira (method)">#hira</a></span>
205
+ <small>ZenginLite::Branch</small>
206
+ </div>
207
+ </li>
208
+
209
+
210
+ <li class="odd ">
211
+ <div class="item">
212
+ <span class='object_link'><a href="ZenginLite/Bank.html#hira-instance_method" title="ZenginLite::Bank#hira (method)">#hira</a></span>
213
+ <small>ZenginLite::Bank</small>
214
+ </div>
215
+ </li>
216
+
217
+
218
+ <li class="even ">
219
+ <div class="item">
220
+ <span class='object_link'><a href="ZenginLite/Bank.html#initialize-instance_method" title="ZenginLite::Bank#initialize (method)">#initialize</a></span>
221
+ <small>ZenginLite::Bank</small>
222
+ </div>
223
+ </li>
224
+
225
+
226
+ <li class="odd ">
227
+ <div class="item">
228
+ <span class='object_link'><a href="ZenginLite/Branch.html#initialize-instance_method" title="ZenginLite::Branch#initialize (method)">#initialize</a></span>
229
+ <small>ZenginLite::Branch</small>
230
+ </div>
231
+ </li>
232
+
233
+
234
+ <li class="even ">
235
+ <div class="item">
236
+ <span class='object_link'><a href="ZenginLite/Branch.html#inspect-instance_method" title="ZenginLite::Branch#inspect (method)">#inspect</a></span>
237
+ <small>ZenginLite::Branch</small>
238
+ </div>
239
+ </li>
240
+
241
+
242
+ <li class="odd ">
243
+ <div class="item">
244
+ <span class='object_link'><a href="ZenginLite/Bank.html#inspect-instance_method" title="ZenginLite::Bank#inspect (method)">#inspect</a></span>
245
+ <small>ZenginLite::Bank</small>
246
+ </div>
247
+ </li>
248
+
249
+
250
+ <li class="even ">
251
+ <div class="item">
252
+ <span class='object_link'><a href="ZenginLite/Bank.html#kana-instance_method" title="ZenginLite::Bank#kana (method)">#kana</a></span>
253
+ <small>ZenginLite::Bank</small>
254
+ </div>
255
+ </li>
256
+
257
+
258
+ <li class="odd ">
259
+ <div class="item">
260
+ <span class='object_link'><a href="ZenginLite/Branch.html#kana-instance_method" title="ZenginLite::Branch#kana (method)">#kana</a></span>
261
+ <small>ZenginLite::Branch</small>
262
+ </div>
263
+ </li>
264
+
265
+
266
+ <li class="even ">
267
+ <div class="item">
268
+ <span class='object_link'><a href="ZenginLite/Database.html#metadata-class_method" title="ZenginLite::Database.metadata (method)">metadata</a></span>
269
+ <small>ZenginLite::Database</small>
270
+ </div>
271
+ </li>
272
+
273
+
274
+ <li class="odd ">
275
+ <div class="item">
276
+ <span class='object_link'><a href="ZenginLite/Branch.html#name-instance_method" title="ZenginLite::Branch#name (method)">#name</a></span>
277
+ <small>ZenginLite::Branch</small>
278
+ </div>
279
+ </li>
280
+
281
+
282
+ <li class="even ">
283
+ <div class="item">
284
+ <span class='object_link'><a href="ZenginLite/Bank.html#name-instance_method" title="ZenginLite::Bank#name (method)">#name</a></span>
285
+ <small>ZenginLite::Bank</small>
286
+ </div>
287
+ </li>
288
+
289
+
290
+ <li class="odd ">
291
+ <div class="item">
292
+ <span class='object_link'><a href="ZenginLite/Bank.html#roma-instance_method" title="ZenginLite::Bank#roma (method)">#roma</a></span>
293
+ <small>ZenginLite::Bank</small>
294
+ </div>
295
+ </li>
296
+
297
+
298
+ <li class="even ">
299
+ <div class="item">
300
+ <span class='object_link'><a href="ZenginLite/Branch.html#roma-instance_method" title="ZenginLite::Branch#roma (method)">#roma</a></span>
301
+ <small>ZenginLite::Branch</small>
302
+ </div>
303
+ </li>
304
+
305
+
306
+ <li class="odd ">
307
+ <div class="item">
308
+ <span class='object_link'><a href="ZenginLite/Database.html#search_banks-class_method" title="ZenginLite::Database.search_banks (method)">search_banks</a></span>
309
+ <small>ZenginLite::Database</small>
310
+ </div>
311
+ </li>
312
+
313
+
314
+ <li class="even ">
315
+ <div class="item">
316
+ <span class='object_link'><a href="ZenginLite.html#search_banks-class_method" title="ZenginLite.search_banks (method)">search_banks</a></span>
317
+ <small>ZenginLite</small>
318
+ </div>
319
+ </li>
320
+
321
+
322
+ <li class="odd ">
323
+ <div class="item">
324
+ <span class='object_link'><a href="ZenginLite/Database.html#stats-class_method" title="ZenginLite::Database.stats (method)">stats</a></span>
325
+ <small>ZenginLite::Database</small>
326
+ </div>
327
+ </li>
328
+
329
+
330
+ <li class="even ">
331
+ <div class="item">
332
+ <span class='object_link'><a href="ZenginLite.html#stats-class_method" title="ZenginLite.stats (method)">stats</a></span>
333
+ <small>ZenginLite</small>
334
+ </div>
335
+ </li>
336
+
337
+
338
+ <li class="odd ">
339
+ <div class="item">
340
+ <span class='object_link'><a href="ZenginLite/Bank.html#to_h-instance_method" title="ZenginLite::Bank#to_h (method)">#to_h</a></span>
341
+ <small>ZenginLite::Bank</small>
342
+ </div>
343
+ </li>
344
+
345
+
346
+ <li class="even ">
347
+ <div class="item">
348
+ <span class='object_link'><a href="ZenginLite/Branch.html#to_h-instance_method" title="ZenginLite::Branch#to_h (method)">#to_h</a></span>
349
+ <small>ZenginLite::Branch</small>
350
+ </div>
351
+ </li>
352
+
353
+
354
+
355
+ </ul>
356
+ </div>
357
+ </body>
358
+ </html>
@@ -0,0 +1,110 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.9.38
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index</a> &raquo;
40
+
41
+
42
+ <span class="title">Top Level Namespace</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Top Level Namespace
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ </div>
80
+
81
+ <h2>Defined Under Namespace</h2>
82
+ <p class="children">
83
+
84
+
85
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="ZenginLite.html" title="ZenginLite (module)">ZenginLite</a></span>
86
+
87
+
88
+
89
+
90
+ </p>
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ </div>
101
+
102
+ <div id="footer">
103
+ Generated on Sat Feb 7 19:33:57 2026 by
104
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
+ 0.9.38 (ruby-3.4.6).
106
+ </div>
107
+
108
+ </div>
109
+ </body>
110
+ </html>
@@ -0,0 +1,65 @@
1
+ module ZenginLite
2
+ class Bank
3
+ class << self
4
+ def all
5
+ banks = {}
6
+ ZenginLite.each_bank do |bank|
7
+ banks[bank.code] = bank
8
+ end
9
+ banks
10
+ end
11
+
12
+ def [](code)
13
+ ZenginLite.bank(code)
14
+ end
15
+ end
16
+
17
+ attr_reader :code, :name, :kana, :hira, :roma
18
+
19
+ def initialize(code:, name:, kana:, hira:, roma:)
20
+ @code = code
21
+ @name = name
22
+ @kana = kana
23
+ @hira = hira
24
+ @roma = roma
25
+ end
26
+
27
+ def branch(branch_code)
28
+ row = Database.find_branch(bank_code: code, branch_code: branch_code)
29
+ Branch.from_row(row) if row
30
+ end
31
+
32
+ def branches(limit: nil)
33
+ Database.find_branches(bank_code: code, limit: limit).each_with_object({}) do |row, hash|
34
+ branch = Branch.from_row(row)
35
+ hash[branch.code] = branch
36
+ end
37
+ end
38
+
39
+ def to_h
40
+ {
41
+ code: code,
42
+ name: name,
43
+ kana: kana,
44
+ hira: hira,
45
+ roma: roma
46
+ }
47
+ end
48
+
49
+ def inspect
50
+ "#<#{self.class.name} code=#{code.inspect}, name=#{name.inspect}, kana=#{kana.inspect}>"
51
+ end
52
+
53
+ def self.from_row(row)
54
+ return nil unless row
55
+
56
+ new(
57
+ code: row[0],
58
+ name: row[1],
59
+ kana: row[2],
60
+ hira: row[3],
61
+ roma: row[4]
62
+ )
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,47 @@
1
+ module ZenginLite
2
+ class Branch
3
+ attr_reader :code, :bank_code, :name, :kana, :hira, :roma
4
+
5
+ def bank
6
+ ZenginLite.bank(bank_code)
7
+ end
8
+
9
+ def initialize(code:, bank_code:, name:, kana:, hira:, roma:)
10
+ @code = code
11
+ @bank_code = bank_code
12
+ @name = name
13
+ @kana = kana
14
+ @hira = hira
15
+ @roma = roma
16
+ end
17
+
18
+ def to_h
19
+ {
20
+ code: code,
21
+ bank_code: bank_code,
22
+ name: name,
23
+ kana: kana,
24
+ hira: hira,
25
+ roma: roma
26
+ }
27
+ end
28
+
29
+ def inspect
30
+ "#<#{self.class.name} code=#{code.inspect}, bank_code=#{bank_code.inspect}, name=#{name.inspect}, kana=#{kana.inspect}>"
31
+ end
32
+
33
+ # @api private
34
+ def self.from_row(row)
35
+ return nil unless row
36
+
37
+ new(
38
+ code: row[0],
39
+ bank_code: row[1],
40
+ name: row[2],
41
+ kana: row[3],
42
+ hira: row[4],
43
+ roma: row[5]
44
+ )
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,91 @@
1
+ require 'sqlite3'
2
+
3
+ module ZenginLite
4
+ # @api private
5
+ class Database
6
+ class << self
7
+ def connection
8
+ @connection ||= begin
9
+ unless File.exist?(ZenginLite::DB_PATH)
10
+ raise "Database file not found: #{ZenginLite::DB_PATH}"
11
+ end
12
+
13
+ db = SQLite3::Database.new(ZenginLite::DB_PATH.to_s, readonly: true)
14
+ db.results_as_hash = false
15
+ db
16
+ end
17
+ end
18
+
19
+ def close
20
+ @connection&.close
21
+ @connection = nil
22
+ end
23
+
24
+ # Query methods
25
+ def find_bank(code:)
26
+ connection.get_first_row(
27
+ 'SELECT code, name, kana, hira, roma FROM banks WHERE code = ?',
28
+ [code]
29
+ )
30
+ end
31
+
32
+ def search_banks(name: nil, kana: nil, limit: 10)
33
+ sql = 'SELECT code, name, kana, hira, roma FROM banks WHERE 1=1'
34
+ params = []
35
+
36
+ if name
37
+ sql += ' AND name LIKE ?'
38
+ params << "%#{name}%"
39
+ end
40
+
41
+ if kana
42
+ sql += ' AND kana LIKE ?'
43
+ params << "%#{kana}%"
44
+ end
45
+
46
+ sql += ' LIMIT ?'
47
+ params << limit
48
+
49
+ connection.execute(sql, params)
50
+ end
51
+
52
+ def each_bank(&block)
53
+ connection.execute('SELECT code, name, kana, hira, roma FROM banks') do |row|
54
+ block.call(row)
55
+ end
56
+ end
57
+
58
+ def find_branch(bank_code:, branch_code:)
59
+ connection.get_first_row(
60
+ 'SELECT code, bank_code, name, kana, hira, roma FROM branches WHERE bank_code = ? AND code = ?',
61
+ [bank_code, branch_code]
62
+ )
63
+ end
64
+
65
+ def find_branches(bank_code:, limit: 100)
66
+ limit ||= -1
67
+ connection.execute(
68
+ 'SELECT code, bank_code, name, kana, hira, roma FROM branches WHERE bank_code = ? LIMIT ?',
69
+ [bank_code, limit]
70
+ )
71
+ end
72
+
73
+ def metadata(key)
74
+ row = connection.get_first_row(
75
+ 'SELECT value FROM metadata WHERE key = ?',
76
+ [key]
77
+ )
78
+ row&.first
79
+ end
80
+
81
+ def stats
82
+ {
83
+ banks_count: connection.get_first_value('SELECT COUNT(*) FROM banks'),
84
+ branches_count: connection.get_first_value('SELECT COUNT(*) FROM branches'),
85
+ updated_at: metadata('updated_at'),
86
+ md5: metadata('md5')
87
+ }
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,3 @@
1
+ module ZenginLite
2
+ VERSION = "0.1.0"
3
+ end