3.1.7 • Published 9 months ago

mr-jdb v3.1.7

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

mr-jdb

Getting started

npm install mr-jdb

1. Definir as variaveis de ambiente

// caminho padrão das bases de dados
process.env.DEFAULT_JDB_CONNECTION_PATH = 'db/my_jdb'     // => default: 'db/jdb'

// nome da conexão padrão
process.env.DEFAULT_JDB_CONNECTION_NAME = 'my_connection' // => default: 'default_connection'

// base de dados padrão
process.env.DEFAULT_JDB_DATABASE_NAME   = 'my_database'   // => default: 'default_database'

// caminho da rota raiz das requisições rest
process.env.DEFAULT_JDB_REST_ROOT_ROUTE = 'jdb-test'      // => default: 'jdb-rest'

2. Instanciando um servidor REST

Esta feccamenta pode ser facilmente configurada em um servidor http (express), sem a necessidade de manipulação dos dados.

import express from 'exprepss'
import jdb from 'mr-jdb'

const app = express()
app.use(jdb({
	defaultRootRoute: 'jdb-test',
	connections: [{
		name: 'my_connection_1',
		path: 'db/conn_1'
	},
	{
		name: 'my_connection_2',
		path: 'db/conn_2'
	}]
}))

app.listen(3000)

No exemplo foram definidos:

  1. a rota raiz como jdb-test (http://localhost:3000/jdb-test)

  2. duas conexões que poderão ser requisitadas utilizando a metodologia REST da seguinte forma:

MétodoCaminhoDescrição
GEThttp://localhost:3000/jdb-test/:connection_name/:database_name/:collection_namerequisita todos os registros de uma coleção
GEThttp://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:idrequisita um registro específico da coleção
POSThttp://localhost:3000/jdb-test/:connection_name/:database_name/:collection_namerequisita a inclusão de um registro em uma coleção
PUThttp://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:idatualiza um registro específico em uma coleção
DELETEhttp://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:idremove um registro específico de uma coleção

Nota

As bases de dados e coleções serão criadas dinamicamente, ou seja, basta efetuar a criação de um registro utilizando o método POST que a ferramenta criará automaticamente a base de dados e a coleção, caso não existam.

3. Uso da base de dados em aplicações

2.1. Criar um ambiente

// 1. jdb.createConnection({ name: string, path?: string, logger?: boolean })
jdb.createConnection({ name: 'my_connection' })

// 2. Connections.createConnection({ name: string, path?: string, logger?: boolean })
Connections.createConnection({ name: 'my_connection' })

2.2. Instanciar uma das classes JdbQuery enviando o nome da conexão desejada

QueryModel

// 1. jdb.QueryModel(collection: string, database?: string, connection?: string)
const model = new jdb.QueryModel('my_collection')

// 2. JdbQueryModel(collection: string, database?: string, connection?: string)
const model = new JdbQueryModel('my_collection')

QueryManager

// 1. jdb.QueryManager(database?: string, connection?: string)
const qm = new jdb.QueryManager()

// 2. JdbQueryManager(database?: string, connection?: string)
const qm = new JdbQueryManager()

QueryCollection

// 1. jdb.QueryCollection(collection, database?: string, connection?: string)
const coll = new jdb.QueryCollection('my_collection')

// 2. JdbQueryCollection(collection, database?: string, connection?: string)
const coll = new JdbQueryCollection('my_collection')

2.3. Executar as consultas

QueryModel

// model.findAll(query?: IObjectQueryString): Record[]
const recordset = model.findAll({ $map: 'name,age' })

// model.findAndCountAll(query?: IObjectQueryString): QueryCollectionResponse
const { affectedRows, recordset } = model.findAndCountAll({ $map: 'name,age' })

// model.findById(id: number | string, query?: IObjectQueryString): Record
const data = model.findById(id: number | string, { $map: 'name,age' })

// model.findOne(query: IObjectQueryString): Record
const data = model.findOne({ name: 'joao' })

// model.create(data: Record): Record
const data = model.create({ name: 'joao', age: 52 })

// model.updateById(id: number | string, data: Record, overwrite?: boolean): Record
const data = model.updateById(1234567, { address: 'Rua 1, 15' })

// model.removeById(id): number
const affected = model.removeById(1234567)

QueryManager

// qm.select(collection: string, opts: { query?: IObjectQueryString, id?: number | string }): QueryCollectionResponse
const { affectedRows, recordset } = qm.select('my_collection', { query: { $map: 'name,age' } })

// qm.insert(collection: string, data: Record | Record[]): QueryCollectionResponse
const { affectedRows, recordset } = qm.insert('my_collection', { name: 'joao', age: 52 })

// qm.update(collection: string, data: Record, opts: { query?: IObjectQueryString, id?: string |number, overwrite?: boolean }): QueryCollectionResponse
const { affectedRows, recordset } = qm.update('my_collection', { address: 'Rua 1, 15' }, { id: 1234567 })

// qm.delete(collection: string, opts: { query?: IObjectQueryString, id?: string|number }): QueryCollectionResponse
const { affectedRows, recordset } = qm.delete('my_collection', { id: 1234567 })

QueryCollection

// coll.select(query?: MRQueryParams): QueryCollectionResponse
const { affectedRows, recordset } = coll.select(new MRQueryParams({ $map: 'name,age' }))

// coll.insert(data: Record | Record[]): QueryCollectionResponse
const { affectedRows, recordset } = coll.insert({ name: 'joao', age: 52 })

// coll.update(data: Record, query: MRQueryParams, overwrite?: boolean): QueryCollectionResponse
const { affectedRows, recordset } = coll.update({ address: 'Rua 1, 15' }, new MRQueryParams({ id: 1234567 }))

// coll.delete(query: MRQueryParams): QueryCollectionResponse
const { affectedRows, recordset } = coll.delete(new MRQueryParams({ id: 1234567 }))
3.1.7

9 months ago

3.1.6

9 months ago

3.1.5

10 months ago

3.1.4

10 months ago

3.1.3

10 months ago

3.1.2

10 months ago

3.1.1

10 months ago

3.1.0

10 months ago

3.0.2

10 months ago

3.0.1

10 months ago

3.0.0

10 months ago

1.1.0

11 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