surrealdb

Version, currently 0.11 version
  • 0.1latestSep 22, 2022

github.com/mamiysr/surrealdb.cr

SurrealDB driver for Crystal

7 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  surrealdb:
    github: mamiysr/surrealdb.cr
    version: ~> 0.1

Then run:

shards install

shard.yml

Crystal
1.5.1
License
MIT
Author
Muhammed Yaşar <mamiysr@gmail.com>

Dependencies

This version declares no dependencies.

README

# surrealdb

**[WIP]** The unofficial SurrealDB library for Crystal.

## Installation

1. Add the dependency to your `shard.yml`:

   ```yaml
   dependencies:
     surrealdb:
       github: yorci/surrealdb.cr
   ```

2. Run `shards install`

## Usage

###  Connection 
```crystal
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

1. Fork it (<https://github.com/yorci/surrealdb/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

- [Muhammed Yaşar](https://github.com/yorci) - creator and maintainer