3.1.7 • Published 9 months ago
mr-jdb v3.1.7
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:
a rota raiz como
jdb-test
(http://localhost:3000/jdb-test)duas conexões que poderão ser requisitadas utilizando a metodologia REST da seguinte forma:
Método | Caminho | Descrição |
---|---|---|
GET | http://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name | requisita todos os registros de uma coleção |
GET | http://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:id | requisita um registro específico da coleção |
POST | http://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name | requisita a inclusão de um registro em uma coleção |
PUT | http://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:id | atualiza um registro específico em uma coleção |
DELETE | http://localhost:3000/jdb-test/:connection_name/:database_name/:collection_name/:id | remove 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 }))