Tool to get Floramondo offers
https://api.staging.floriday.io/customers-api-2023v1/swagger/index.html
Guillermo Bonet 7202a0c339 | ||
---|---|---|
.vscode | ||
models | ||
.eslintrc.cjs | ||
.gitignore | ||
README.md | ||
floriday.js | ||
main.js | ||
package-lock.json | ||
package.json | ||
utils.js |
README.md
Floriday
The Floriday service project should perform the following tasks:
- Create / mantain the table structure to allow the storage of the data provided by the Floriday API. This is done using the Sequelize ORM.
- Query the Floriday API and store the data in the database.
This is done using the axios package.
2.1. The data is requested every minute, but only the data that has changed is stored in the database. This is done using the Sequelize ORM and storing the data as it is received from the API, so it can be compared with the previous data.
Requeriments
- Git
- Nodejs (v15.14.0 or higher)
Installation
Pull from repository.
Run this commands on project root directory to install Node dependencies.
npm i
.env file template
#FLORIDAY DATA CONFIG
CLIENT_ID = xxxxxxxxxx
CLIENT_SECRET = xxxxxxxxxx
API_KEY = xxxxxxxxxx
API_URL = https://api.staging.floriday.io/customers-api-2023v1
API_ENDPOINT = https://idm.staging.floriday.io/oauth2/ausmw6b47z1BnlHkw0h7/v1/token
#SEQUELIZE CONFIG
DB_SCHEMA = schema
DB_USER = root
DB_PWD = root
DB_HOST = localhost
DB_DIALECT = mariadb
DB_TIMEOUT_RECONECT = 30000
DB_MAX_CONN_POOL = 40
DB_TIMEZONE = Europe/Madrid
#GENERAL CONFIG
IS_PRODUCTION = false
MS_PRODUCTION_SCHEDULE = 300000
MS_TEST_SCHEDULE = 100000
SECRETS = true
FORCE_SYNC = true
SYNC_SEQUENCE = true
SYNC_SUPPLIER = true
SYNC_CONN = true
SYNC_TRADEITEM = true
MAX_REQUEST_RETRIES = 3
#DEV OPTIONS
SUPPLIERS_ALWAYS_CONN = false
Guidelines
-
In case a new model is created, it should follow the following structure:
-
/models
- main.js
- foo.js
Foo.js
import { Sequelize } from 'sequelize';
const bar = {
barCharacteristicOne: {
type: Sequelize.INTEGER,
},
barCharacteristicTwo: {
type: Sequelize.STRING,
},
barCharacteristicThree: {
type: Sequelize.STRING,
},
};
export default (sequelize) => {
const Foo = sequelize.define(
"foo",
bar,
{
timestamps: false,
freezeTableName: true,
}
);
return Foo;
};
main.js
import foo from "./foo";
let models = {
bar: foo(sequelize),
};