Skip to content

tomi77/node-bookshelf-django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django models for Bookshelf

Node.js CI CodeQL Downloads

Table of contents

Installation

NPM

npm install bookshelf-django --save

Yarn

yarn add bookshelf-django

Usage

Load models to registry

require('bookshelf-django')(bookshelf);

var AuthUser = bookshelf.model('Django.Auth.User');

or load model/collection

var AuthUser = require('bookshelf-django')(bookshelf).Auth.User;

Available models / collections

Django.Session

Django session framework model

Django.Sessions

Django session framework collection

Django.Site

Django site model

Django.Sites

Django site collection

Django.FlatPage

Django flat page model

toString() -> string

Returns string representation of a permission.

const FlatPage = bookshelf.model('Django.FlatPage')

FlatPage.forge({id: 1})
.fetch()
.then(function(flat_page) {
  console.log(flat_page.toString())
})

Django.FlatPages

Django flat pages collection

Django.Redirect

Django redirect model

toString() -> string

Returns string representation of a redirect.

const Redirect = bookshelf.model('Django.Redirect')

Redirect.forge({id: 1})
.fetch()
.then(function(redirect) {
  console.log(redirect.toString())
})

Django.Redirects

Django redirects collection

Django.ContentType

Django content type model

Django.ContentTypes

Django content type collection

Django.Auth.Permission

Permission model

toString() -> string

Returns string representation of a permission.

const AuthPermission = bookshelf.model('Django.Auth.Permission')

AuthPermission.forge({id: 1})
.fetch({withRelated: 'contentType'})
.then(function(permission) {
  console.log(permission.toString())
})

toStringAsync() -> Promise<string>

Returns Promise with string representation of a permission.

const AuthPermissions = bookshelf.collection('Django.Auth.Permissions')

AuthPermission.forge({id: 1})
.fetch({withRelated: 'contentType'})
.then(function(permission) {
  return permission.toStringAsync()
}).then(function(permission) {
  console.log(permission)
})

stringify(permissionModel) -> string

Parameters

  • permissionModel Django.Auth.Permission

    Django.Auth.Permission object

Stringify a Django.Auth.Permission object.

const AuthPermission = bookshelf.model('Django.Auth.Permission')

AuthPermission.forge({id: 1})
.fetch()
.then(AuthPermission.stringify)
.then(function(permission) {
  console.log(permission)
})

Django.Auth.Permissions

Permission collection

Django.Auth.Group

Groups of permissions model

getPermissions() -> Promise<Django.Auth.Permissions>

Collection of permissions of group permissions.

const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthGroup = bookshelf.model('Django.Auth.Group')

AuthGroup.forge()
.fetch({withRelated: ['permissions', 'permissions.contentType']})
.then(function(permissions) {
  return permissions.getPermissions()
}).then(function(permissions) {
  console.log(permissions.map(AuthPermission.stringify))
})

Django.Auth.Groups

Groups of permissions collection

getPermissions() -> Promise<Django.Auth.Permissions>

Collection of unique permissions of group permissions.

const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthGroups = bookshelf.collection('Django.Auth.Groups')

AuthGroups.all()
.fetch({withRelated: ['permissions', 'permissions.contentType']})
.then(function(permissions) {
  return permissions.getPermissions()
}).then(function(permissions) {
  console.log(permissions.map(AuthPermission.stringify))
})

Django.Auth.User

Django user collection

getPermissions() -> Promise<Django.Auth.Permissions>

Collection of unique permissions of group permissions and permissions.

const AuthPermission = bookshelf.model('Django.Auth.Permission')
const AuthUser = bookshelf.model('Django.Auth.User')

AuthUser.forge({id: 1})
.fetch()
.then(function(user) {
  return user.getPermissions()
}).then(function(permissions) {
  console.log(permissions.map(AuthPermission.stringify))
})

Django.Auth.Users

Django user collection

Testing your project

In beforeAll hook runs knex migrations in order

  • Django
  • Your project

All migrations must have own migration table (tableName property).

before(() => {
  knex.migrate.latest({directory: 'node_modules/bookshelf-django/migrations/', tableName: 'knex_migrations_django'})
}).then(() => {
  knex.migrate.latest({directory: 'migrations/', tableName: 'knex_migrations_my_project'})
})

In afterAll hook runs knex migrations in reverse order

  • Your project
  • Django
after(() => {
  knex.migrate.rollback({directory: 'migrations/', tableName: 'knex_migrations_my_project'})
}).then(() => {
  knex.migrate.rollback({directory: 'node_modules/bookshelf-django/migrations/', tableName: 'knex_migrations_django'})
})