2.2.3 • Published 2 years ago

@app-masters/node-lib v2.2.3

Weekly downloads
8
License
ISC
Repository
github
Last release
2 years ago

node-lib

apiBootstrap

A short start to App Masters APIs:

// Requires for bootstrap
const express = require('express');
const app = express();
const envs = require('./config/config');
const packag = require('./package');
const passport = require('passport');
const userSchema = require('./app/model/userSchema');

const apiBootstrap = require('./apiBoostrap');

// 1 - Api Bootstrap tests
apiBootstrap.setup(app, envs, packag, passport);
// 2 - Include Routes
require('./app/routes')(app);
// 3 - Listen API
apiBootstrap.listen(app);

Environment

When using the apiBootstrapS, you can use a local development variables. Create a .env file in the project root and set the variables. Right now, the bootstrap is accepting:

DATABASE_URL=postgres://...?ssl=true //If not set here, must be specified on config file

Config

{
    security:{
        singleLoginSignup:true // will enable login and signup at same route: /login/
    }
}

nodeRestful

Easy node-restful use with less code and more resources.

registerRoute

Will register a route with node-restful.

let route = {
    route: '/api/user',
    modelName: 'user',
    schema: mySchema,
};

nodeRestful.registerRoute(app, router, routeParams);

registerMultipleRoutes

Do same as registerRoute, but receiving an array of routes.

exposeModelMethods

Allow to call a model method directly from rest route.

Eg: http://myapi.com/user/5a3168e1f60a471f02fb92f5/sendGreetings will call referred user user.sendGreetings().

First it will check for mongoose.model(yourModel).sendGreetings method, if it found, well be called mongoose.model(yourModel).sendGreetings(5a3168e1f60a471f02fb92f5).

If the method don't exists on mongoose model, will check on model instance, like mongoose.model(yourModel).find(5a3168e1f60a471f02fb92f5).sendGreetings, if it exists will be called without any parameter.

To all of this work you just need pass exposeModelMethods to registerRoute.

let route = {
    route: '/api/user',
    modelName: 'user',
    schema: mySchema,
    exposeModelMethods: ['sendGreetings','getMoreData','sendMoreSpam']
};

nodeRestful.registerRoute(app, router, routeParams);

amMailing

amInvite

Add invite key on api config file:

envs.development = {
    invite: {
        singleUserLink: true,
        baseUrlAndRoute: 'http://publicurl.com/invite/',
        sendEmail: true
    }
};

If you want to know if some user accept an invite, call somewhere:

AMInvite.setAcceptCallback((invite=>{
    // invite have all data you need
}));

Examples:

    http://emagrecaja.com.br/convite/0197039120321730918
    http://eisaquestao.ufjf.br/amigo/0197039120321730918

Message

Allow to manage the message sending.

Configuration

- On the config.js file, set the message config (this file will be used as a parameter in the message.setup(config) method).
- The example bellow sets a configuration object for the 'feedback' message key that will save on the de dataBase (saveToDb: boolean).
- message.fields sets the fields expected and the correspond string that will be displayed to the final user.
const message = {
    feedback: {
        to: "igor.phelype@gmail.com",
        subject: "Feedback de uso",
        saveToDb: true,
        fields: {name: 'Nome', gender: 'Sexo', text: 'Mensagem'}
    }
};

Usage

// Router example
router.post('/message/:messageKey', Message.sendMessage);

Notification (api)

Firebase initialize and lib setup

  • The notification config object must look exactly like this
// you can do this way
const firebaseServiceAccount = require('path-to-your/service-account.json');
// or this way (the firebaseServiceAccount must have this structure)
const firebaseServiceAccount = {
    'type': 'service_account',
    'project_id': '',
    'private_key_id': '',
    'private_key': '-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n',
    'client_email': '',
    'client_id': '',
    'auth_uri': '',
    'token_uri': '',
    'auth_provider_x509_cert_url': '',
    'client_x509_cert_url': ''
};

const notification = {
    credential: firebaseServiceAccount,
    databaseURL: ''
};
  • Our apiBootstrap will handle this object and setup the Notification
if(config.notification){
    Notification.setup(config.notification);
}
  • But if you don't want to use the apiBoostrap just call: Notification.setup(notification)

Lib methods

setup
  • Receives the config object and sets its credentials on the firebase-admin instance

Stats

Development

npm install

Model

ModelSequelize

Setup

const ModelSequelize = require('@app-masters/node-lib').modelSequelize;
const sequelize = require('../resources/sequelize'); //sequelize connection
const otherModel = require('./path/to/otherModel');

const MyModel extends ModelSequelize {}

const schema = {/*sequelize schema with foreign key to 'other'*/};

const modelOptions = [{model: otherModel, options: {foreignKey: 'otherId'}}]);
MyModel.setup( modelName, schema, itemInstance, relationArray, modelOptions);

module.exports = MyModel.model;

Session

To use sessions just add a session key on your config.

{
    session:{
        someThing:true
    }
}

Tests

  • Message npm run test test/sequelizeMessage.test.js

Change Log

Check all changes on changelog.

2.2.3

2 years ago

2.2.2

3 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.87

4 years ago

2.1.88

4 years ago

2.1.86

4 years ago

2.1.85

5 years ago

2.1.84

5 years ago

2.1.83

5 years ago

2.1.82

5 years ago

2.1.81

5 years ago

2.1.80

5 years ago

2.1.79

5 years ago

2.1.78

5 years ago

2.1.77

5 years ago

2.1.75

6 years ago

2.1.74

6 years ago

2.1.73

6 years ago

2.1.72

6 years ago

2.1.71

6 years ago

2.1.70

6 years ago

2.1.69

6 years ago

2.1.68

6 years ago

2.1.67

6 years ago

2.1.66

6 years ago

2.1.65

6 years ago

2.1.64

6 years ago

2.1.63

7 years ago

2.1.62

7 years ago

2.1.61

7 years ago

2.1.60

7 years ago

2.1.58

7 years ago

2.1.57

7 years ago

2.1.56

7 years ago

2.1.55

7 years ago

2.1.54

7 years ago

2.1.52

7 years ago

2.1.5

7 years ago

2.1.4

7 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.109

7 years ago

2.0.108

7 years ago

2.0.107

7 years ago

2.0.106

7 years ago

2.0.105

7 years ago

2.0.104

7 years ago

2.0.103

7 years ago

2.0.102

7 years ago

2.0.101

7 years ago

2.0.100

7 years ago

2.0.98

7 years ago

2.0.97

7 years ago

2.0.96

7 years ago

2.0.95

7 years ago

2.0.94

7 years ago

2.0.93

7 years ago

2.0.92

7 years ago

2.0.91

7 years ago

2.0.89

7 years ago

2.0.88

7 years ago

2.0.87

7 years ago

2.0.86

7 years ago

2.0.85

7 years ago

2.0.84

7 years ago

2.0.83

7 years ago

2.0.82

7 years ago

2.0.81

7 years ago

2.0.80

7 years ago

2.0.79

7 years ago

2.0.78

7 years ago

2.0.77

7 years ago

2.0.76

7 years ago

2.0.75

7 years ago

2.0.74

7 years ago

2.0.73

7 years ago

2.0.72

7 years ago

2.0.71

7 years ago

2.0.70

7 years ago

2.0.69

7 years ago

2.0.68

7 years ago

2.0.67

7 years ago

2.0.66

7 years ago

2.0.65

7 years ago

2.0.64

7 years ago

2.0.63

7 years ago

2.0.62

7 years ago

2.0.61

7 years ago

2.0.60

7 years ago

2.0.59

7 years ago

2.0.58

7 years ago

2.0.57

7 years ago

2.0.56

7 years ago

2.0.55

7 years ago

2.0.54

7 years ago

2.0.52

7 years ago

2.0.51

7 years ago

2.0.50

7 years ago

2.0.49

7 years ago

2.0.48

7 years ago

2.0.47

7 years ago

2.0.46

7 years ago

2.0.45

7 years ago

2.0.44

7 years ago

2.0.43

7 years ago

2.0.42

7 years ago

2.0.41

7 years ago

2.0.40

7 years ago

2.0.39

7 years ago

2.0.38

7 years ago

2.0.37

7 years ago

2.0.36

7 years ago

2.0.35

7 years ago

2.0.34

7 years ago

2.0.33

7 years ago

2.0.31

7 years ago

2.0.30

7 years ago

2.0.28

7 years ago

2.0.27

7 years ago

2.0.25

7 years ago

2.0.24

7 years ago

2.0.23

7 years ago

2.0.22

7 years ago

2.0.21

7 years ago

2.0.19

7 years ago

2.0.18

7 years ago

2.0.17

7 years ago

2.0.16

7 years ago

2.0.15

7 years ago

2.0.14

7 years ago

2.0.13

7 years ago

2.0.12

7 years ago

2.0.11

7 years ago

2.0.10

7 years ago

2.0.9

7 years ago

2.0.8

7 years ago

2.0.7

7 years ago

2.0.6

7 years ago

2.0.5

7 years ago

2.0.4

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.1.77

7 years ago

1.1.76

7 years ago

1.1.75

7 years ago

1.1.74

7 years ago

1.1.73

7 years ago

1.1.72

7 years ago

1.1.71

7 years ago

1.1.70

7 years ago

1.1.69

7 years ago

1.1.68

7 years ago

1.1.67

7 years ago

1.1.66

7 years ago

1.1.65

7 years ago

1.1.64

7 years ago

1.1.63

7 years ago

1.1.62

7 years ago

1.1.61

7 years ago

1.1.60

7 years ago

1.1.59

7 years ago

1.1.58

7 years ago

1.1.57

7 years ago

1.1.56

7 years ago

1.1.55

7 years ago

1.1.54

7 years ago

1.1.53

7 years ago

1.1.52

7 years ago

1.1.51

7 years ago

1.1.48

7 years ago

1.1.47

7 years ago

1.1.41

7 years ago

1.1.40

7 years ago

1.1.39

7 years ago

1.1.38

7 years ago

1.1.37

7 years ago

1.1.36

7 years ago

1.1.35

7 years ago

1.1.34

7 years ago

1.1.33

7 years ago

1.1.32

7 years ago

1.1.31

7 years ago

1.1.30

7 years ago

1.1.29

7 years ago

1.1.28

8 years ago

1.1.27

8 years ago

1.1.26

8 years ago

1.1.25

8 years ago

1.1.24

8 years ago

1.1.23

8 years ago

1.1.22

8 years ago

1.1.21

8 years ago

1.1.20

8 years ago

1.1.19

8 years ago

1.1.18

8 years ago

1.1.17

8 years ago

1.1.16

8 years ago

1.1.15

8 years ago

1.1.14

8 years ago

1.1.13

8 years ago

1.1.12

8 years ago

1.1.11

8 years ago

1.1.10

8 years ago

1.1.9

8 years ago

1.1.8

8 years ago

1.1.7

8 years ago

1.1.6

8 years ago

1.1.5

8 years ago

1.1.4

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago