diff --git a/docs/_assets/icon/crystal-logo.svg b/docs/_assets/icon/crystal-logo.svg new file mode 100644 index 00000000..5262fd6e --- /dev/null +++ b/docs/_assets/icon/crystal-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/connect/crystal/index.md b/docs/connect/crystal/index.md new file mode 100644 index 00000000..8ceee98a --- /dev/null +++ b/docs/connect/crystal/index.md @@ -0,0 +1,64 @@ +(connect-crystal)= + +# Crystal + +:::{div} sd-text-muted +Connect to CrateDB from Crystal applications. +::: + +:::{rubric} About +::: + +[crystal-pg] is a native, non-blocking Postgres driver for Crystal, +building upon [crystal-db]. + +:::{rubric} Synopsis +::: + +`shard.yml` +```yaml +name: cratedb_demo +version: 0.0.0 +dependencies: + pg: + github: will/crystal-pg +``` +`example.cr` +```crystal +require "db" +require "pg" + +DB.open("postgres://crate:crate@localhost:5432/doc?sslmode=disable") do |db| + + db.query "SELECT mountain, height FROM sys.summits ORDER BY height DESC LIMIT 3" do |rs| + puts "#{rs.column_name(0)} #{rs.column_name(1)}" + rs.each do + puts "#{rs.read(String)}: #{rs.read(Int32)}" + end + end + +end +``` + +:::{include} ../_cratedb.md +::: +```shell +shards install +``` +```shell +crystal example.cr +``` + +:::{rubric} CrateDB Cloud +::: + +For connecting to CrateDB Cloud, use `sslmode=require&auth_methods=cleartext` +parameters, and replace username, password and hostname with values matching +your environment. +```crystal +DB.open("postgres://admin:password@testcluster.cratedb.net:5432/doc?sslmode=require&auth_methods=cleartext") +``` + + +[crystal-db]: https://github.com/crystal-lang/crystal-db +[crystal-pg]: https://github.com/will/crystal-pg diff --git a/docs/connect/index.md b/docs/connect/index.md index ffe0cae1..a891d0be 100644 --- a/docs/connect/index.md +++ b/docs/connect/index.md @@ -49,6 +49,20 @@ CrateDB drivers and adapters for supported programming languages, frameworks, an :margin: 4 4 0 0 :padding: 0 +::::{grid-item-card} Crystal +:link: connect-crystal +:link-type: ref +:link-alt: Connect to CrateDB using Crystal +:padding: 3 +:text-align: center +:class-card: sd-pt-3 +:class-body: sd-fs-1 +:class-title: sd-fs-6 +```{image} /_assets/icon/crystal-logo.svg +:height: 70px +``` +:::: + ::::{grid-item-card} Java :link: connect-java :link-type: ref @@ -182,6 +196,7 @@ application :maxdepth: 1 :hidden: +crystal/index java javascript php