https://github.com/codegoalie/mysql-cellophane
very thin wrapper for mysql adapters
https://github.com/codegoalie/mysql-cellophane
Last synced: 11 months ago
JSON representation
very thin wrapper for mysql adapters
- Host: GitHub
- URL: https://github.com/codegoalie/mysql-cellophane
- Owner: codegoalie
- Created: 2010-12-09T14:14:59.000Z (about 15 years ago)
- Default Branch: master
- Last Pushed: 2011-04-13T03:41:19.000Z (almost 15 years ago)
- Last Synced: 2025-02-14T05:43:50.051Z (about 1 year ago)
- Language: Ruby
- Homepage:
- Size: 336 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
MySQL-Cellphane
==============
A very thin wrapper for mysql adapters. Useful for people who are comfortable
with SQL, but are tired of the annoyances of writing each query each time.
MySQL-Cellophane helps by abstracting away some of the repetative query
building process while allowing complete control over your queries.
MySQL-Cellophane aims to fill the gap between hand typing each query and a
full ORM by streamlining the creation of db connections, setting smart defaults,
easily running multiple, similar queries, returning intelligent responses, and
avoiding SQL injection.
Requires the mysql gem
gem install mysql
> there is an old version mysql.rb included in public folder above or
> from http://www.tmtm.org/en/ruby/mysql/
Getting Started
---------------
### Attributes
basic building blocks of queries
- table
specifies the table to operate on
- id_field
specifies which column in the main condition (used with id)
is set to 1 by default to override the main condition (id must be set to 1 as well)
- id
specifies a value for the main condition (used with id_field)
is set to 1 by default to override the main condition (id_field must be set to 1 as well)
is escaped before being placed in query
- extra_cond
concatinated onto the end of the base query
IS NOT ESCAPED - use esc method to escape values
### Methods
Each interaction method can optionally take a final hash argument. This hash can set any of
the class attributes listed above. See the examples below for more information.
- select
performs a select query
- insert({hash})
requires a hash argument of symbol keys for column names and values for each column
to be inserted
- update
requires a hash argument of symbol keys for column names and values for each column
to be updated
- delete
performs a delete query
------
### Examples
#### friends table
id
name
age
1
Chris
26
2
Hayley
24
3
Bobby
25
#### initialize
db = MySQLc.new {:user => 'mysql_user', :password => 'mysql_password', :database => 'database'}
#### select
get all rows
db.table = 'friends'
result = db.select # SELECT * FROM friends WHERE 1=1
result.fetch_hash #=> { 'id' => 1, 'name' => 'Chris', 'age' => 26 }
result.fetch_hash #=> { 'id' => 2, 'name' => 'Hayley', 'age' => 24 }
result.fetch_hash #=> { 'id' => 3, 'name' => 'Bobby', 'age' => 25 }
get one friend
db.id_field = 'id'
db.id = 1
result = db.select # SELECT * FROM friends WHERE id = 1
result.fetch_hash #=> { 'id' => 1, 'name' => 'Chris', 'age' => 26 }
Notice how we don't need to specify the table again because we did in the example above. One of the very
nice features of MySQL Cellophane is that it keeps your values for you.
setting the options in-line
result = db.select({ :table => 'friends', :id_field => 'id', :id => 2}) # SELECT * FROM friends WHERE id = 2
result.fetch_row #=> [ 2, 'Hayley', 24 ]
specifying columns
db.field_list = 'name, age'
db.id = 1
db.id_field = 1
result = db.select # SELECT name, age FROM friends WHERE 1=1
result.fetch_row #=> [ 'Chris', 26 ]
result.fetch_row #=> [ 'Hayley', 24 ]
using extra_cond
db = MySQLc.new
db.table = 'friends'
db.field_list = 'name'
db.extra_cond = "name LIKE '%y' ORDER BY name"
result = db.select # SELECT * FROM friends WHERE 1=1 AND name LIKE '%y' ORDER BY name
result.fetch_row #=> [ 'Bobby' ]
result.fetch_row #=> [ 'Hayley' ]
#### insert
db.insert { :name => 'Katie', :age => 23 }
##### new friends table
id
name
age
1
Chris
26
2
Hayley
24
3
Bobby
25
4
Katie
23
inline
new_id = db.insert { :name => 'Jared', :age => 26 }, { :table => 'friends' }
new_id #=> 5
##### new new friends table
id
name
age
1
Chris
26
2
Hayley
24
3
Bobby
25
4
Katie
23
5
Jared
26
#### update
db.id_field = 'name'
db.id = 'Katie'
db.update { :age => 22 }
db.select.fetch_hash #=> { 'id' => 4, 'name' => 'Katie', 'age' => 22 }
db.update { :age => 27 }, { :id => 26, :id_field => 'age', :table => 'friends' }
db.id = 27
db.select.fetch_hash #=> { 'id' => 1, 'name' => 'Chris', 'age' => 27 }
db.select.fetch_hash #=> { 'id' => 5, 'name' => 'Jared', 'age' => 27 }
#### delete
db = MySQLc.new
db.table = 'friends'
db.extra_cond = 'age < 25'
db.delete
id
name
age
1
Chris
26
3
Bobby
25
5
Jared
26