11.0.11 • Published 5 years ago

the-db v11.0.11

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

the-db

Build Status npm Version JS Standard

DB for the-framework

Installation

$ npm install the-db --save

Usage

Basic Usage

'use strict'

const {TheDB} = require('the-db')
const {
  TheResource,
  DataTypes: {STRING}
} = require('the-resource-base')

// Define a resource class
// See https://github.com/realglobe-Inc/clay-resource for more detail
class UserResource extends TheResource {
  // Convert entity attributes on inbound
  static inbound (attributes) {
    const digest = (password) => { /* ... */ }
    attributes.passwordHash = digest(attributes.password)
    return attributes
  }

  // Convert entity attributes on outbound
  static outbound (attributes) {
    delete attributes.password
    return attributes
  }

  // Resource policy
  // https://github.com/realglobe-Inc/clay-policy#usage
  static get policy () {
    return {
      username: {type: STRING},
      password: {type: STRING},
    }
  }

  // Create index to enable filter/sort with nested attributes
  static get indices () {
    return ['profile.name', 'profile.email']
  }

  // Enhance entity class
  static entityClass (ResourceEntity) {
    return class UserResourceEntity extends ResourceEntity {
      get fullName () {
        let {firstName, lastName} = this
        return [firstName, lastName].filter(Boolean).join(' ')
      }
    }
  }

  // Hook after entity create
  static onCreate (created) {
    console.log('Entity created:', created)
  }

  // Hook after entity update
  static onUpdate (updated) {
    console.log('Entity updated:', updated)
  }

  // Hook after entity destroy
  static onDestroyed (destroyed) {
    console.log('Entity destroyed:', destroyed)
  }
}

const db = new TheDB({
  dialect: 'sqlite', // Uses "clay-driver-sqlite" package
  storage: 'var/my-app.db' // File path to save
})

db.load(UserResource, 'User')

// Using defined database

async function tryExample () {
  // Use the connected resource
  const {User} = db.resources
  let user = await User.create({username: 'Black Fire', password: 'Super Cool'})
  /* ... */
}

tryExample().catch((err) => console.error(err))

Dialect Examples

env.dialect option decides where to store data with Clay-Driver.

'use strict'

const {TheDB} = require('the-db')

// Using sqlite
{
  const sqlite = new TheDB({
    dialect: 'sqlite', // Uses "clay-driver-sqlite" package
    storage: 'var/my-app.db' // File path to save
  })
}

// Using json
{
  const json = new TheDB({
    dialect: 'json', // Uses "clay-driver-json" package
    storage: 'var/my-app.json' // File path to save
  })
}

// Using mysql
{
  const mysql = TheDB({
    dialect: 'mysql', // Uses "clay-driver-mysql" package
    database: 'my-app',
    username: 'user01',
    password: 'xxxxxxxxxxx'
  })
}

Data migrations

'use strict'

const {TheDB} = require('the-db')
const {
  TheResource,
  DataTypes: {STRING, /*....*/},
} = require('the-resource-base')

class UserResource extends TheResource {
  /* ... */
}

const db = new TheDB({/* ... */})

db.load(UserResource, 'User')

// Using defined database

async function tryExample () {

  // Migration scripts
  const migrations = {

    // Called only if no migration has ever executed
    async 'none' (db) {
      const {User} = db.resources

      // Migration scripts
      await User.each(async (user) => {
        const {username} = user
        await user.update({name: username, username: null})
      })
      /* ... */

      await db.updateVersion('1.0.0') // Update to next version
    },

    async '1.0.0' (db) {
      /* ... */
      await db.updateVersion('1.0.1')
    }
  }
  await db.migrate(migrations)
}

tryExample().catch((err) => console.error(err))

API Guide

License

This software is released under the MIT License.

Links

11.0.11

5 years ago

11.0.10

5 years ago

11.0.9

5 years ago

11.0.8

5 years ago

11.0.7

5 years ago

11.0.6

5 years ago

11.0.5

5 years ago

11.0.4

5 years ago

11.0.3

5 years ago

11.0.2

5 years ago

11.0.0

5 years ago

10.1.13

5 years ago

10.1.12

5 years ago

10.1.11

5 years ago

10.1.10

5 years ago

10.1.8

5 years ago

10.1.6

5 years ago

10.1.5

5 years ago

10.1.4

5 years ago

10.1.3

5 years ago

10.1.2

5 years ago

10.1.0

5 years ago

10.0.2

5 years ago

10.0.1

5 years ago

10.0.0

5 years ago

9.6.28

5 years ago

9.6.27

5 years ago

9.6.26

5 years ago

9.6.25

5 years ago

9.6.24

5 years ago

9.6.23

5 years ago

9.6.22

5 years ago

9.6.21

5 years ago

9.6.19

5 years ago

9.6.18

5 years ago

9.6.17

5 years ago

9.6.16

5 years ago

9.6.15

5 years ago

9.6.14

5 years ago

9.6.13

5 years ago

9.6.12

5 years ago

9.6.11

5 years ago

9.6.10

5 years ago

9.6.9

5 years ago

9.6.8

5 years ago

9.6.7

5 years ago

9.6.6

5 years ago

9.6.5

5 years ago

9.6.4

5 years ago

9.6.3

5 years ago

9.6.2

5 years ago

9.6.1

5 years ago

9.6.0

5 years ago

9.5.48

5 years ago

9.5.47

5 years ago

9.5.46

5 years ago

9.5.45

6 years ago

9.5.44

6 years ago

9.5.43

6 years ago

9.5.42

6 years ago

9.5.41

6 years ago

9.5.40

6 years ago

9.5.39

6 years ago

9.5.38

6 years ago

9.5.37

6 years ago

9.5.36

6 years ago

9.5.35

6 years ago

9.5.34

6 years ago

9.5.33

6 years ago

9.5.32

6 years ago

9.5.31

6 years ago

9.5.30

6 years ago

9.5.29

6 years ago

9.5.28

6 years ago

9.5.27

6 years ago

9.5.26

6 years ago

9.5.25

6 years ago

9.5.24

6 years ago

9.5.23

6 years ago

9.5.22

6 years ago

9.5.21

6 years ago

9.5.20

6 years ago

9.5.19

6 years ago

9.5.18

6 years ago

9.5.17

6 years ago

9.5.16

6 years ago

9.5.15

6 years ago

9.5.14

6 years ago

9.5.13

6 years ago

9.5.12

6 years ago

9.5.11

6 years ago

9.5.10

6 years ago

9.5.9

6 years ago

9.5.8

6 years ago

9.5.7

6 years ago

9.5.6

6 years ago

9.5.5

6 years ago

9.5.4

6 years ago

9.5.3

6 years ago

9.5.2

6 years ago

9.4.13

6 years ago

9.4.12

6 years ago

9.4.11

6 years ago

9.4.10

6 years ago

9.4.9

6 years ago

9.4.8

6 years ago

9.4.7

6 years ago

9.4.6

6 years ago

9.4.5

6 years ago

9.4.4

6 years ago

9.4.3

6 years ago

9.4.2

6 years ago

9.4.1

6 years ago

9.4.0

6 years ago

9.3.45

6 years ago

9.3.43

6 years ago

9.3.42

6 years ago

9.3.41

6 years ago

9.3.40

6 years ago

9.3.39

6 years ago

9.3.38

6 years ago

9.3.37

6 years ago

9.3.36

6 years ago

9.3.35

6 years ago

9.3.34

6 years ago

9.3.33

6 years ago

9.3.32

6 years ago

9.3.31

6 years ago

9.3.30

6 years ago

9.3.29

6 years ago

9.3.28

6 years ago

9.3.27

6 years ago

9.3.26

6 years ago

9.3.25

6 years ago

9.3.24

6 years ago

9.3.23

6 years ago

9.3.22

6 years ago

9.3.21

6 years ago

9.3.20

6 years ago

9.3.19

6 years ago

9.3.18

6 years ago

9.3.17

6 years ago

9.3.16

6 years ago

9.3.15

6 years ago

9.3.14

6 years ago

9.3.13

6 years ago

9.3.12

6 years ago

9.3.11

6 years ago

9.3.10

6 years ago

9.3.9

6 years ago

9.3.7

6 years ago

9.3.6

6 years ago

9.3.5

6 years ago

9.3.4

6 years ago

9.3.3

6 years ago

9.3.2

6 years ago

9.3.1

6 years ago

9.3.0

6 years ago

9.1.5

6 years ago

9.1.4

6 years ago

9.1.3

6 years ago

9.1.2

6 years ago

9.1.1

6 years ago

9.1.0

6 years ago

9.0.10

6 years ago

9.0.9

6 years ago

9.0.8

6 years ago

9.0.7

6 years ago

9.0.6

6 years ago

9.0.5

6 years ago

9.0.4

6 years ago

9.0.3

6 years ago

9.0.2

6 years ago

9.0.1

6 years ago

9.0.0

6 years ago

8.2.3

6 years ago

8.2.2

6 years ago

8.2.1

6 years ago

8.2.0

6 years ago

8.1.0

6 years ago

8.0.0

6 years ago

7.9.4

6 years ago

7.9.3

6 years ago

7.9.2

6 years ago

7.9.1

6 years ago

7.9.0

6 years ago

7.8.45

6 years ago

7.8.44

6 years ago

7.8.43

6 years ago

7.8.42

6 years ago

7.8.41

6 years ago

7.8.40

6 years ago

7.8.39

6 years ago

7.8.38

6 years ago

7.8.37

6 years ago

7.8.36

6 years ago

7.8.35

6 years ago

7.8.34

6 years ago

7.8.33

6 years ago

7.8.32

6 years ago

7.8.31

6 years ago

7.8.30

6 years ago

7.8.29

6 years ago

7.8.28

6 years ago

7.8.27

6 years ago

7.8.26

6 years ago

7.8.25

6 years ago

7.8.24

6 years ago

7.8.23

6 years ago

7.8.22

6 years ago

7.8.21

6 years ago

7.8.20

6 years ago

7.8.19

6 years ago

7.8.18

7 years ago

7.8.17

7 years ago

7.8.16

7 years ago

7.8.15

7 years ago

7.8.14

7 years ago

7.8.13

7 years ago

7.8.12

7 years ago

7.8.11

7 years ago

7.8.10

7 years ago

7.8.9

7 years ago

7.8.8

7 years ago

7.8.7

7 years ago

7.8.6

7 years ago

7.8.5

7 years ago

7.8.4

7 years ago

7.8.3

7 years ago

7.8.1

7 years ago

7.8.0

7 years ago

7.7.0

7 years ago

7.6.22

7 years ago

7.6.21

7 years ago

7.6.20

7 years ago

7.6.19

7 years ago

7.6.18

7 years ago

7.6.17

7 years ago

7.6.16

7 years ago

7.6.15

7 years ago

7.6.14

7 years ago

7.6.13

7 years ago

7.6.12

7 years ago

7.6.11

7 years ago

7.6.9

7 years ago

7.6.8

7 years ago

7.6.7

7 years ago

7.6.6

7 years ago

7.6.5

7 years ago

7.6.4

7 years ago

7.6.3

7 years ago

7.6.1

7 years ago

7.6.0

7 years ago

7.5.0

7 years ago

7.3.2

7 years ago

7.3.1

7 years ago

7.3.0

7 years ago

7.2.1

7 years ago

7.2.0

7 years ago

7.1.18

7 years ago

7.1.17

7 years ago

7.1.16

7 years ago

7.1.15

7 years ago

7.1.14

7 years ago

7.1.13

7 years ago

7.1.12

7 years ago

7.1.10

7 years ago

7.1.9

7 years ago

7.1.8

7 years ago

7.1.7

7 years ago

7.1.6

7 years ago

7.1.5

7 years ago

7.1.4

7 years ago

7.1.3

7 years ago

7.1.2

7 years ago

7.1.1

7 years ago

7.1.0

7 years ago

7.0.6

7 years ago

7.0.5

7 years ago

7.0.4

7 years ago

7.0.3

7 years ago

7.0.2

7 years ago

7.0.1

7 years ago

7.0.0

7 years ago

6.0.6

7 years ago

6.0.5

7 years ago

6.0.4

7 years ago

6.0.3

7 years ago

6.0.2

7 years ago

6.0.1

7 years ago

6.0.0

7 years ago

5.2.0

7 years ago

5.1.4

7 years ago

5.1.3

7 years ago

5.1.2

7 years ago

5.1.1

7 years ago

5.1.0

7 years ago

5.0.5

7 years ago

5.0.4

7 years ago

5.0.3

7 years ago

5.0.2

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.0.2

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.1.2

7 years ago

3.1.1

7 years ago

3.1.0

7 years ago

3.0.14

7 years ago

3.0.13

7 years ago

3.0.12

7 years ago

3.0.11

7 years ago

3.0.10

7 years ago

3.0.9

7 years ago

3.0.8

7 years ago

3.0.7

7 years ago

3.0.6

7 years ago

3.0.5

7 years ago

3.0.4

7 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago