thinky-wrap

1.0.6 • Public • Published

thinky-wrap

thinky-wrap is a reworked version of the legacy thinky package. Use thinky-wrap to port legacy thinky-using projects to recent versions of node, using rethinkdb-ts. thinky-wrap uses no dependencies.

import thinky from 'thinky-wrap'
import rethinkdbts from 'rethinkdb-ts'

export const init = async () => {
  // connect rethinkdb-ts first
  await rethinkdbts.r.connectPool({
    host: env.RETHINK_HOST,
    port: +env.RETHINK_PORT,
    user: env.RETHINK_USER,
    password: env.RETHINK_PASSWORD,
    db: env.RETHINK_DB
  })

  // create thinky instance around connected rethinkdb-ts
  return thinky({ db: env.RETHINK_DB }, rethinkdbts.r)
}

note: Thinky-wrap is not tested with cursors. Original thinky tests require a database connection and are not verified. Rethinkdb-ts should be connected outside of thinky-wrap and before calling thinky-wrap.

original Thinky README

Thinky

=============================== Wercker status Light Node.js ORM for RethinkDB.

Quick start

Install:

npm install thinky

Use:

var thinky = require('thinky')();
var type   = thinky.type;

// Create a model - the table is automatically created
var Post = thinky.createModel("Post", {
  id: String,
  title: String,
  content: String,
  idAuthor: String
}); 

// You can also add constraints on the schema
var Author = thinky.createModel("Author", {
  id: type.string(),      // a normal string
  name: type.string().min(2),  // a string of at least two characters
  email: type.string().email()  // a string that is a valid email
});

// Join the models
Post.belongsTo(Author, "author", "idAuthor", "id");

Save a new post with its author.

// Create a new post
var post = new Post({
  title: "Hello World!",
  content: "This is an example."
});

// Create a new author
var author = new Author({
  name: "Michel",
  email: "orphee@gmail.com"
});

// Join the documents
post.author = author;


post.saveAll().then(function(result) {
  /*
  post = result = {
    id: "0e4a6f6f-cc0c-4aa5-951a-fcfc480dd05a",
    title: "Hello World!",
    content: "This is an example.",
    idAuthor: "3851d8b4-5358-43f2-ba23-f4d481358901",
    author: {
      id: "3851d8b4-5358-43f2-ba23-f4d481358901",
      name: "Michel",
      email: "orphee@gmail.com"
    }
  }
  */
});

Retrieve the post with its author.

Post.get("0e4a6f6f-cc0c-4aa5-951a-fcfc480dd05a").getJoin().run().then(function(result) {
  /*
  result = {
    id: "0e4a6f6f-cc0c-4aa5-951a-fcfc480dd05a",
    title: "Hello World!",
    content: "This is an example.",
    idAuthor: "3851d8b4-5358-43f2-ba23-f4d481358901",
    author: {
      id: "3851d8b4-5358-43f2-ba23-f4d481358901",
      name: "Michel",
      email: "orphee@gmail.com"
    }
  }
  */
});

Documentation

https://www.justonepixel.com/thinky (branch `gh-pages).

Help

No SLA, but a few developers hang out there and may be able to help:

Run the tests

npm test

Contribute

You are welcome to do a pull request.

Roadmap

The roadmap is defined with the issues/feedback on GitHub. Checkout:
https://github.com/neumino/thinky/issues

Author

Contributors

License

MIT, see the LICENSE file

Package Sidebar

Install

npm i thinky-wrap

Weekly Downloads

7

Version

1.0.6

License

MIT

Unpacked Size

232 kB

Total Files

22

Last publish

Collaborators

  • bumblehead