From c6e2a5148225f73695743ec11272247dbbc599c8 Mon Sep 17 00:00:00 2001 From: "Brian J. Cardiff" Date: Thu, 25 Feb 2016 23:53:23 -0300 Subject: [PATCH] add readme and version --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++ src/db/version.cr | 3 ++ 2 files changed, 73 insertions(+) create mode 100644 README.md create mode 100644 src/db/version.cr diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef19626 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# crystal-db + +Common db api for crystal + +There is already a forked implementation for [sqlite](https://github.com/bcardiff/crystal-sqlite3/tree/db) and [mysql](https://github.com/bcardiff/crystal-mysql/tree/db) that (partially) implements mysql's binary protocol (no dependency!) + +## Installation + +Add this to your application's `shard.yml`: + +```yaml +dependencies: + db: + github: bcardiff/crystal-db +``` + +## Usage + +Since this is an abstract db api, it's usage is through a concrete database driver. + +```crystal +require "db" +require "sqlite3" + +DB.open "sqlite3:./file.db" do |db| + db.exec "create table contacts (name string, age integer)" + db.exec "insert into contacts values (?, ?)", "John Doe", 30 + + args = [] of DB::Any + args << "Sarah" + args << 33 + db.exec "insert into contacts values (?, ?)", args + + puts "max age:" + puts db.scalar "select max(age) from contacts" # => 33 + + puts "contacts:" + db.query "select name, age from contacts order by age desc" do |rs| + puts "#{rs.column_name(0)} (#{rs.column_name(1)})" + # => name (age) + rs.each do + puts "#{rs.read(String)} (#{rs.read(Int32)})" + # => Sarah (33) + # => John Doe (30) + end + end +end +``` +## Roadmap + +Issues not yet addressed + +[ ] Support non prepared statements. +[ ] Time data type. +[ ] Data type extensibility. Allow each driver to extend the data types allowed. +[ ] Transactions. +[ ] Connection pool. +[ ] Direct access to `IO` to avoid memory allocation for blobs. + +## Contributing + +1. Fork it ( https://github.com/bcardiff/crystal-db/fork ) +2. Create your feature branch (git checkout -b my-new-feature) +3. Commit your changes (git commit -am 'Add some feature') +4. Push to the branch (git push origin my-new-feature) +5. Create a new Pull Request + +## Contributors + +- [bcardiff](https://github.com/bcardiff) Brian J. Cardiff - creator, maintainer diff --git a/src/db/version.cr b/src/db/version.cr new file mode 100644 index 0000000..8250464 --- /dev/null +++ b/src/db/version.cr @@ -0,0 +1,3 @@ +module DB + VERSION = "0.1.0" +end