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..b7602e6a --- /dev/null +++ b/docs/connect/crystal/index.md @@ -0,0 +1,66 @@ +(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/?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} SSL connection +::: + +Use the `sslmode=require&auth_methods=cleartext` parameters, +and replace username, password, +and hostname with values matching your environment. +Also use this variant to connect to CrateDB Cloud. + +```crystal +DB.open("postgres://admin:password@testcluster.cratedb.net:5432/?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 84404e82..d9529b11 100644 --- a/docs/connect/index.md +++ b/docs/connect/index.md @@ -75,6 +75,19 @@ Any (ODBC) C# :::: +::::{grid-item-card} +:link: connect-crystal +:link-type: ref +:link-alt: Connect to CrateDB using Crystal +:class-body: sd-fs-1 sd-text-center +:class-footer: sd-fs-5 sd-font-weight-bold +```{image} /_assets/icon/crystal-logo.svg +:height: 70px +``` ++++ +Crystal +:::: + ::::{grid-item-card} :link: connect-elixir :link-type: ref @@ -336,6 +349,7 @@ application :maxdepth: 1 :hidden: +crystal/index csharp/index elixir/index erlang/index