# speck-sequelize-repository

> Repositories using Speck

Latest version **1.1.0-alpha** (published 2019-01-26) · GPL-3.0-only license · 0 weekly downloads

## Install

```sh
npm install speck-sequelize-repository
pnpm add speck-sequelize-repository
yarn add speck-sequelize-repository
bun add speck-sequelize-repository
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0-alpha |
| Published | 2019-01-26 |
| First published | 2017-03-09 |
| Weekly downloads | 0 |
| License | GPL-3.0-only |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 80 KB |
| Known vulnerabilities | 0 (+7 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 6 |
| Author | Scup |
| Maintainers | albertossilva, scupteam |
| Keywords | Javascript, Entities, Repositories |

## Links

- npm: https://www.npmjs.com/package/speck-sequelize-repository
- Repository: https://github.com/scup/speck-sequelize-repository
- Homepage: https://github.com/scup/speck-sequelize-repository#readme
- Issues: https://github.com/scup/speck-sequelize-repository/issues
- npm.io page: https://npm.io/package/speck-sequelize-repository

## Dependencies (4)

- [pg](https://npm.io/package/pg.md) ^7.6.1
- [mysql](https://npm.io/package/mysql.md) ^2.16.0
- [mysql2](https://npm.io/package/mysql2.md) ^1.6.4
- [object-mapper](https://npm.io/package/object-mapper.md) ^5.0.0

## Recent versions

- 1.1.0-alpha (latest) — 2019-01-26
- 1.0.0 — 2019-01-25
- 0.2.0 — 2018-11-23
- 0.1.2 — 2018-03-19
- 0.1.1 — 2018-02-22
- 0.1.0 — 2017-12-18
- 0.0.9 — 2017-05-05
- 0.0.8 — 2017-05-04
- 0.0.7 — 2017-05-04
- 0.0.6 — 2017-03-14
- 0.0.5 — 2017-03-14
- 0.0.4 — 2017-03-14
- 0.0.3 — 2017-03-10
- 0.0.1 — 2017-03-09

## README

## Speck Sequelize Repository - Create repositories handle Sequelize models with [Speck](https://github.com/scup/speck).

[![Build Status](https://travis-ci.org/scup/speck-sequelize-repository.svg?branch=master)](https://travis-ci.org/scup/speck-sequelize-repository)

This package let you use Speck with repositories to handle Sequelize models.

* [Installing](#installing)
* [Examples](#examples)

### Installing
    $ npm install speck-sequelize-repository

### Examples

#### Sample Repository
```javascript
const { Repository } = require('speck-sequelize-repository')

const { MySequelizeModel } = require('./models')
const MyModelMap = require('./modelMaps/MyModelMap')

const MyModelRepository = {
  customQuery ({ someField }) {
    return this.findOneByCriterias({ someField })
  }
}

module.exports = Repository.for(MySequelizeModel, MyModelMap, MyModelRepository)

```

#### Sample Mapper

Creates a mapper like in [object-mapper](https://github.com/wankdanker/node-object-mapper):

```javascript
const { Mapper } = require('speck-sequelize-repository')

const map = {
  toEntity: {
    'someField': 'someField'
  },
  toDatabase: {
    'someField': 'someField'
  }
}

module.exports = new Mapper(Object, map)

```

#### Auto Mapper

Creates a Mapper without specifying manually the map fields:

```javascript
  const { AutoMapper } = require('speck-sequelize-repository')
  const mapper = new AutoMapper(someSpeckEntity)
```

The map fields will be automatically created from a speck entity. Note: entity relationships will have opinionated naming, example: `entity.relationship` will expect on database a `relationship` table with `relationshipId` field.

You can also **override** some of the automatically generated fields naming, or **exclude** entity properties from map on AutoMapper constructor:

```javascript
  const mapper = new AutoMapper(someSpeckEntity, {
     override: {
       entityField: 'otherFieldName',
       entityRelationshipField: 'otherTableName.otherFieldName'
     },
     exclude: ['someEntityProperty']
  )
```

---
_Source: https://npm.io/package/speck-sequelize-repository · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
