sack 1.2.2 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d0dcda61db650f139ef10c0445e28ffe9414774
4
- data.tar.gz: f5f428caeb746a6f0785fc4fc20c1fbed1cedd4c
3
+ metadata.gz: 90bcc0a090fb37382416f80c5e3a617b38ff1498
4
+ data.tar.gz: 6f84ea73b3ad0237ab2a64ebd172aa424e712d5f
5
5
  SHA512:
6
- metadata.gz: a249b6218fbda1c2bf5ec83b51db757cedf445f5e8fa75e048a058a270774fc5173718d7cc4d645ec29908535c480dba293f424ef2c2d2dfed867262b05c22f0
7
- data.tar.gz: 5b13755787d931401464121e5eee17a3102ca1042a1b21b344ac19d111e75094789736ff603a54207cdca85cc931637ea7b1cbdcc328a2115814c00ccf424270
6
+ metadata.gz: 4379c6f945742fde6e37a7c1ec0ceb6815e8696f43ddc35f80c63cdd7ede14b323d986a2d0f46cd5869bdf84c82b5cf274158f0ff87ce9a5866694790e877786
7
+ data.tar.gz: d71837eef03ece759e12af73f241cb0850d537aed3314e8e5c8e60de9dfbb548dd87a87526c7e72f039813965fa38912d42d7c7e29a1720d2ab5fb13e6ef6d2a
@@ -0,0 +1,45 @@
1
+ # Sack
2
+ # by Eresse <eresse@eresse.net>
3
+
4
+ # External Includes
5
+ require 'mysql2'
6
+
7
+ # Internal Includes
8
+ require 'sack/database/sanitizer'
9
+
10
+ # Sack Module
11
+ module Sack
12
+
13
+ # Connectors Module
14
+ module Connectors
15
+
16
+ # MySQL Connector Module:
17
+ # Provides MySQL connectivity for Sack Database.
18
+ module MySQLConnector
19
+
20
+ # Open:
21
+ # Opens a connection to a MySQL database.
22
+ # @param [String] conn_string The connection string (host=myServerAddress;database=myDataBase;username=myUsername;password=myPassword;)
23
+ # @return [Object] Database connection
24
+ def self.open conn_string
25
+ Mysql2::Client.new Hash[*(conn_string.split(';').inject([]) { |a, e| a + e.split('=') })]
26
+ end
27
+
28
+ # Close:
29
+ # Closes a previously-opened database connection.
30
+ # @param [Object] dbc Database connection
31
+ def self.close dbc
32
+ dbc.close
33
+ end
34
+
35
+ # Execute
36
+ # Executes an SQL statement with parameters
37
+ # @param [Object] dbc Database connection
38
+ # @param [String] q Statement
39
+ # @return [Array] Statement results
40
+ def self.exec dbc, q
41
+ dbc.query(q).rows
42
+ end
43
+ end
44
+ end
45
+ end
@@ -36,10 +36,9 @@ module Sack
36
36
  # Executes an SQL statement with parameters
37
37
  # @param [Object] dbc Database connection
38
38
  # @param [String] q Statement
39
- # @param [Array] params Statement parameters
40
39
  # @return [Array] Statement results
41
40
  def self.exec dbc, q
42
- dbc.exec q
41
+ dbc.execute q
43
42
  end
44
43
  end
45
44
  end
@@ -3,7 +3,6 @@
3
3
 
4
4
  # External Includes
5
5
  require 'thread'
6
- require 'sqlite3'
7
6
 
8
7
  # Internal Includes
9
8
  require 'sack/database/data'
@@ -65,7 +64,7 @@ module Sack
65
64
  db = @connector.open @connstring
66
65
 
67
66
  # Yield Block
68
- yield Data.new(db, @schema) if block_given?
67
+ yield Data.new(@connector, db, @schema) if block_given?
69
68
 
70
69
  # Close Database
71
70
  db.close
@@ -22,9 +22,10 @@ module Sack
22
22
 
23
23
  # Construct:
24
24
  # Builds a *Data* object around a _db_ instance, set to operate on _schema_.
25
- # @param [SQLite3::Database] db Database instance obtained by opening an SQLite3 file
25
+ # @param [Object] db Database instance obtained by DBMS file
26
26
  # @param [Hash] schema Schema definition - see README
27
- def initialize db, schema
27
+ def initialize connector, db, schema
28
+ @connector = connector
28
29
  @db = db
29
30
  @schema = schema
30
31
  end
@@ -35,7 +36,7 @@ module Sack
35
36
  # @param [Hash] fields A hash mapping of field names to type definition arrays (from _FTYPES_)
36
37
  def create_table name, fields
37
38
  fq = fields.collect { |fname, ftype| "#{Sanitizer.field_name fname} #{ftype.respond_to?(:each) ? ftype.collect { |e| FTYPES[Sanitizer.ftype e] }.join(' ') : FTYPES[Sanitizer.ftype ftype]}" }.join ', '
38
- @db.execute "create table #{Sanitizer.table @schema, name} (#{fq});"
39
+ @connector.exec @db, "create table #{Sanitizer.table @schema, name} (#{fq});"
39
40
  end
40
41
 
41
42
  # Alter Table:
@@ -43,7 +44,7 @@ module Sack
43
44
  # @param [Symbol] name Table name
44
45
  # @param [Hash] fields A hash mapping of field names to type definition arrays (from _FTYPES_)
45
46
  def alter_table name, fields
46
- fields.each { |fname, ftype| @db.execute "alter table #{Sanitizer.table @schema, name} add #{Sanitizer.field_name fname} #{ftype.respond_to?(:each) ? ftype.collect { |e| FTYPES[Sanitizer.ftype e] }.join(' ') : FTYPES[Sanitizer.ftype ftype]};" rescue nil }
47
+ fields.each { |fname, ftype| @connector.exec @db, "alter table #{Sanitizer.table @schema, name} add #{Sanitizer.field_name fname} #{ftype.respond_to?(:each) ? ftype.collect { |e| FTYPES[Sanitizer.ftype e] }.join(' ') : FTYPES[Sanitizer.ftype ftype]};" rescue nil }
47
48
  end
48
49
 
49
50
  # Count:
@@ -51,7 +52,7 @@ module Sack
51
52
  # @param [Symbol] table Table name
52
53
  # @return [Fixnum] The number of rows present in the given _table_
53
54
  def count table
54
- @db.execute("select count(*) from #{Sanitizer.table @schema, table};")[0][0]
55
+ @connector.exec(@db, "select count(*) from #{Sanitizer.table @schema, table};")[0][0]
55
56
  end
56
57
 
57
58
  # Find:
@@ -72,7 +73,7 @@ module Sack
72
73
  # @param [Object] id ID on which to filter
73
74
  # @return [Array] An array of Hashes, each representing one row
74
75
  def fetch table, id
75
- hash_res(table.to_sym, @db.execute(Statement.prep("select * from #{Sanitizer.table @schema, table} where id = ?;", [id])))
76
+ hash_res(table.to_sym, @connector.exec(@db, Statement.prep("select * from #{Sanitizer.table @schema, table} where id = ?;", [id])))
76
77
  end
77
78
 
78
79
  # Fetch By Field:
@@ -82,7 +83,7 @@ module Sack
82
83
  # @param [Object] val Field value
83
84
  # @return [Array] An array of Hashes, each representing one row
84
85
  def fetch_by table, field, val
85
- hash_res(table.to_sym, @db.execute(Statement.prep("select * from #{Sanitizer.table @schema, table} where #{Sanitizer.field @schema, table, field} = ?;", [val])))
86
+ hash_res(table.to_sym, @connector.exec(@db, Statement.prep("select * from #{Sanitizer.table @schema, table} where #{Sanitizer.field @schema, table, field} = ?;", [val])))
86
87
  end
87
88
 
88
89
  # Fetch All:
@@ -90,7 +91,7 @@ module Sack
90
91
  # @param [Symbol] table Table name
91
92
  # @return [Array] An array of Hashes, each representing one row
92
93
  def fetch_all table
93
- hash_res(table.to_sym, @db.execute("select * from #{Sanitizer.table @schema, table};"))
94
+ hash_res(table.to_sym, @connector.exec(@db, "select * from #{Sanitizer.table @schema, table};"))
94
95
  end
95
96
 
96
97
  # Create:
@@ -98,7 +99,7 @@ module Sack
98
99
  # @param [Symbol] table Table name
99
100
  # @param [Hash] fields Fields to be inserted
100
101
  def create table, fields
101
- @db.execute Statement.prep("insert into #{Sanitizer.table @schema, table} (#{Generator.fields @schema, table, fields}) values (#{Generator.marks fields});", Generator.values(fields.values))
102
+ @connector.exec @db, Statement.prep("insert into #{Sanitizer.table @schema, table} (#{Generator.fields @schema, table, fields}) values (#{Generator.marks fields});", Generator.values(fields.values))
102
103
  end
103
104
 
104
105
  # Update:
@@ -107,7 +108,7 @@ module Sack
107
108
  # @param [Object] id ID on which to filter
108
109
  # @param [Hash] fields Fields to be updated
109
110
  def update table, id, fields
110
- @db.execute Statement.prep("update #{Sanitizer.table @schema, table} set #{Generator.update_marks @schema, table, fields} where id = ?;", [Generator.values(fields.values), id].flatten)
111
+ @connector.exec @db, Statement.prep("update #{Sanitizer.table @schema, table} set #{Generator.update_marks @schema, table, fields} where id = ?;", [Generator.values(fields.values), id].flatten)
111
112
  end
112
113
 
113
114
  # Update By Field:
@@ -117,7 +118,7 @@ module Sack
117
118
  # @param [Object] val Field value
118
119
  # @param [Hash] fields Fields to be updated
119
120
  def update_by table, field, val, fields
120
- @db.execute Statement.prep("update #{Sanitizer.table @schema, table} set #{Generator.update_marks @schema, table, fields} where #{Sanitizer.field @schema, table, field} = ?;", [Generator.values(fields.values), val].flatten)
121
+ @connector.exec @db, Statement.prep("update #{Sanitizer.table @schema, table} set #{Generator.update_marks @schema, table, fields} where #{Sanitizer.field @schema, table, field} = ?;", [Generator.values(fields.values), val].flatten)
121
122
  end
122
123
 
123
124
  # Save:
@@ -138,7 +139,7 @@ module Sack
138
139
  # @param [Symbol] field Field name
139
140
  # @param [Object] val Field value
140
141
  def delete_by table, field, val
141
- @db.execute Statement.prep("delete from #{Sanitizer.table @schema, table} where #{Sanitizer.field @schema, table, field} = ?;", [val])
142
+ @connector.exec @db, Statement.prep("delete from #{Sanitizer.table @schema, table} where #{Sanitizer.field @schema, table, field} = ?;", [val])
142
143
  end
143
144
 
144
145
  # Destroy By Field:
@@ -146,7 +147,7 @@ module Sack
146
147
  # @param [Symbol] table Table name
147
148
  # @param [Object] id ID of rows to be removed
148
149
  def delete table, id
149
- @db.execute Statement.prep("delete from #{Sanitizer.table @schema, table} where id = ?;", [id])
150
+ @connector.exec @db, Statement.prep("delete from #{Sanitizer.table @schema, table} where id = ?;", [id])
150
151
  end
151
152
 
152
153
  # Execute statement:
@@ -155,13 +156,13 @@ module Sack
155
156
  # @param [Array] params Statement parameters
156
157
  # @return [Object] Whatever the statement returned
157
158
  def exec q, params = []
158
- @db.execute Statement.prep(q, params)
159
+ @connector.exec @db, Statement.prep(q, params)
159
160
  end
160
161
 
161
162
  # Pull Results into Hash:
162
- # Converts rows returned by SQLite3 into Hashes matching the provided schema.
163
+ # Converts rows returned by DBMS into Hashes matching the provided schema.
163
164
  # @param [Symbol] table Table name
164
- # @param [Array] x Results returned by SQLite3
165
+ # @param [Array] x Results returned by DBMS
165
166
  # @return [Array] An array of Hashes, each representing a single row
166
167
  def hash_res table, x
167
168
  x
@@ -5,5 +5,5 @@
5
5
  module Sack
6
6
 
7
7
  # Version
8
- VERSION = '1.2.2'
8
+ VERSION = '1.2.4'
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2017-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,6 +95,7 @@ files:
95
95
  - Rakefile
96
96
  - lib/sack.rb
97
97
  - lib/sack/connectors.rb
98
+ - lib/sack/connectors/mysql.rb
98
99
  - lib/sack/connectors/sqlite3.rb
99
100
  - lib/sack/database.rb
100
101
  - lib/sack/database/data.rb