@lpgroup/feathers-counters-service v1.8.3
@lpgroup/feathers-counters-service
Feathersjs hook that adds a counter key to data or result.
The package consists of the service counters
and the hook counter
. The hook will store the number of times a specific event has occured in a database through the service.
This funcionality can for example be used for statistics purpose. Counting the number of times GET
has occured on a specific endpoint. Number of times a specific user has accessed a service. It can also be used to calculate a unique customer number on a customer endpoint on a specific organisation.
Install
Installation of the npm
npm install @lpgroup/feathers-counters-service
// or
yarn add @lpgroup/feathers-counters-service
The hook
before | after | methods | multi | source |
---|---|---|---|---|
yes | yes | all | yes | source |
arguments
property | type | default | description |
---|---|---|---|
format | string | required | A format that makes the counter unique |
periodFmt | string | required | The date period that the counter is counting. https://date-fns.org/v2.28.0/docs/format |
key | string | true | The name of the key in the returned json data/result |
step | number | 1 | Number of steps to increase the counter each time, postive or negative. |
description | string | null | Description of the counter |
The service
The service is required by the hook. To install it, modify feathers service file, app-ng/src/services/index.js
, add the follwoing.
import { counters } from "@lpgroup/feathers-counters-service";
export default (app) => {
/* ... */
app.configure(counters);
};
Endpoints
POST: /counters
GET: /counters
GET: /counters/:alias
PATCH: /counters/:alias
PUT: /counters/:alias
DELETE: /counters/:alias
Object
{
"alias": "status-visits-2021-11",
"group": "status-visits",
"period": "2021-11",
"value": 50,
"description": "status-visits"
/* commonAttributes */
}
Example 1
Give each customer on an organisation a unique customer number, on the endpoint /organisations/:organisationAlias/customer
.
The before hook will add the key customerNumber to data
and store it in the database handled by the endpoint.
{organisationAlias}
comes internally from the url in params.query
.
import { counter } from "@lpgroup/feathers-counters-service";
export default {
before: {
all: [],
find: [],
get: [],
create: [
counter("{organisationAlias}-visitors", null, "customerNumber", 1, "Latest customerNumber"),
],
update: [],
patch: [],
remove: [],
},
};
Example 2
Calculate the number of times a user has accessed the GET method on /status?user=admin
.
{user}
comes internally from the query parameter in params.query
.
import { counter } from "@lpgroup/feathers-counters-service";
export default {
after: {
all: [],
find: [],
get: [
counter(
"total_gets-{user}",
null,
"userAccesses",
1,
"Total number of calls done by a specific user",
),
],
create: [],
update: [],
patch: [],
remove: [],
},
};
Example 3
Calculate number of calls during a month.
The counter will start from the beginning again every month. The statistics for earlier months will be stored in the /counters
service.
import { counter } from "@lpgroup/feathers-counters-service";
export default {
after: {
all: [],
find: [],
get: [],
create: [counter("visitors", "yyyy-MM", "visits", 1, "Number of visits during a month")],
update: [],
patch: [],
remove: [],
},
};
Example 4
Keep track of a stack of files, and for every create
will increase 1 and for every delete will decrease 1.
import { counter } from "@lpgroup/feathers-counters-service";
export default {
after: {
all: [],
find: [],
get: [],
create: [counter("files", null, "files", 1, "Total number of files")],
update: [],
patch: [],
remove: [counter("files", null, "files", -1, "Total number of files")],
},
};
Contribute
See contribute
License
MIT - See licence
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago