Skip to content
This repository has been archived by the owner on Oct 10, 2022. It is now read-only.

schwarzkopfb/victoria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

view on npm downloads per month node version build status test coverage license

Victoria

Simple object-hash relational mapper library for Redis, targeting Node.js 6 and above.

This project is a work in progress

Be aware! Before the project reaches its first release-candidate version, APIs may change without warning and documentation may differ from the actual code base.

Usage

const Database = require('victoria'),
      db       = new Database

db.define('user', {
    name: {
        type: String,
        index: [ 'unique', 'matcing' ],
        minLength: 4,
        maxLength: 16,
        match: /^[a-z0-9_.]+$/
    },
    password: {
        type: String,
        private: true,
        md5: true
    },
    age: {
        type: Number,
        index: 'range',
        min: 0,
        max: 99
    },
    status: {
        type: String,
        index: 'matching',
        enum: [ 'pending', 'verified', 'suspended' ],
        default: 'pending'
    }
})

db.connect()

// create record

db.create('user', {
       name: 'foo',
       password: 'bar',
       age: 42
   })
   .save()
   .then(user => console.log(`user created: ${user.id}`))
   .catch(err => console.error('something exploded! :(' + '\n' + err.stack))

// fetch record with id

db.find('user', '576d132b12b437226f116ea6')
  .then(user => console.log(user ? `${user.name} is ${user.age} years old` : 'user not found :('))

// query records

db.query('user')
  .where({ age: { '>=': 18 } })
  .except({ status: [ 'pending', 'suspended' ] })
  .fetch()
  .then(users => console.log(users))

const search = 'adam'

db.find('user', { name: `*${search}*` })
  .fetch()
  .then(console.log)

Installation

With npm:

npm install victoria

Credits

victoria borrows concepts and inspiration from Michel Martens' ohm.

Topics (to be explained later)

  • Model functionality
    • Serialization & private fields (toObject(), toJSON(), select())
    • Update data
    • Validation
    • Setters
    • Getters
    • Dynamic defaults
  • Indices
  • References & population
  • Record creation
  • Querying
  • CLI (coming soon)

Todo

  • General field list parsing & cache
  • Better structure to cover Redis data types:
  • Model
    • Hash (extract from the current Model implementation)
    • Collection
      • Set
      • SortedSet
      • List

License

MIT license

About

Simple object-hash relational mapper library for Redis, targeting Node.js 6 and above.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published