1.0.6 • Published 10 months ago

thinky-wrap v1.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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.

Thinky

=============================== 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

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

11 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago