surrealdb
surrealdb
[WIP] The unofficial SurrealDB library for Crystal.
Installation
-
Add the dependency to your
shard.yml
:dependencies: surrealdb: github: yorci/surrealdb.cr
-
Run
shards install
Usage
Connection
require "surrealdb"
# FOR HTTP Client
sdb = SurrealDB.create(
url: "http://0.0.0.0:8000/sql",
client: SurrealDB::HTTP,
)
# FOR Websocket Client
sdb = SurrealDB.create(
url: "http://0.0.0.0:8000/rpc",
client: SurrealDB::WS,
)
# Set authorization variables
sdb.signin "root", "root"
sdb.use "test", "test"
# Creates a records in a given table
sdb.create(
"person",
{"title" => "Founder & CEO",
"name" => {
"first" => "Tobie",
"last" => "Morgan Hitchcock",
},
"marketing" => true,
"identifier" => SurrealDB.guid,
}
)
# Selects all records in given table
sdb.select("person")
# Update a person record with a specific id
# note `#change` or `#update` both the same for http client
sdb.update(
"person:jaime",
{"marketing" => false}
)
# [WS] Perform a custom advanced query
sdb.query(
"SELECT marketing, count() FROM type::table($tb) GROUP BY marketing",
{"tb" => "person"}
)
# [HTTP] Perform a custom advanced query
# note: you cannot use query parameter for http client
sdb.query(
"SELECT marketing, count() FROM person GROUP BY marketing",
nil
)
# [WS] Perform a custom advanced query
# this will return *WSErrorResponse*
sdb.query(
"SELECT marketing, counr() FROM type::table($tb) GROUP BY marketing",
{"tb" => "person"}
)
# [HTTP] Perform a custom advanced query
# note: you cannot use query parameter for http client
# this will return *HTTPErrorResponse*
sdb.query(
"SELECT marketing, counr() FROM person GROUP BY marketing",
nil
)
Contributing
- Fork it (https://github.com/yorci/surrealdb/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Muhammed Yaşar - creator and maintainer