Skip to content

Commit

Permalink
Reorganize data-layer
Browse files Browse the repository at this point in the history
  • Loading branch information
javierbrea committed Feb 16, 2019
1 parent 359bff0 commit 688361b
Show file tree
Hide file tree
Showing 43 changed files with 412 additions and 382 deletions.
2 changes: 1 addition & 1 deletion src/data-layer/helpers.js
Expand Up @@ -4,7 +4,7 @@ export const formatDate = dateString => {
return moment(dateString).format("YY-MM-DD, hh:mm:ss");
};

export const display = value => {
export const displayValue = value => {
if (["string", "number"].indexOf(typeof value) < 0) {
return JSON.stringify(value);
}
Expand Down
2 changes: 1 addition & 1 deletion src/data-layer/login.js
Expand Up @@ -2,7 +2,7 @@

import queryString from "query-string";

import { authSession, authJwt } from "./authentication";
import { authSession, authJwt } from "./users";
import { config, removeAuth, setJwtAuth, setApiKeyAuth, cleanAll } from "./setup";

class Login {
Expand Down
@@ -1,6 +1,6 @@
import { origins } from "reactive-data-source";

import { baseConfig } from "../setup";
import { baseConfig } from "../../setup";

export const about = new origins.Api(
"/about",
Expand Down
12 changes: 12 additions & 0 deletions src/data-layer/service/config/origins.js
@@ -0,0 +1,12 @@
import { origins } from "reactive-data-source";

import { authConfig } from "../../setup";

export const config = new origins.Api(
"/config",
{},
{
...authConfig,
defaultValue: {}
}
);
@@ -1,8 +1,7 @@
import { origins, Selector } from "reactive-data-source";
import { Selector } from "reactive-data-source";

import { authConfig } from "../setup";

import { display } from "../helpers";
import { displayValue } from "../../helpers";
import { config } from "./origins";

const BASE_KEYS = {
logLevel: "Log Level",
Expand All @@ -16,15 +15,6 @@ const BASE_KEYS = {
auth: "Authentication enabled"
};

export const config = new origins.Api(
"/config",
{},
{
...authConfig,
defaultValue: {}
}
);

export const baseConfig = new Selector(
config,
configuration => {
Expand All @@ -34,7 +24,7 @@ export const baseConfig = new Selector(
base.push({
key: key,
label: BASE_KEYS[key],
value: display(configuration[key]),
value: displayValue(configuration[key]),
originalValue: configuration[key]
});
}
Expand All @@ -53,7 +43,7 @@ export const customConfig = new Selector(
custom.push({
key: key,
label: key,
value: display(configuration[key]),
value: displayValue(configuration[key]),
originalValue: configuration[key]
});
}
Expand Down
3 changes: 3 additions & 0 deletions src/data-layer/service/index.js
@@ -0,0 +1,3 @@
export * from "./about/origins";
export * from "./config/origins";
export * from "./config/selectors";
@@ -1,17 +1,8 @@
import { origins } from "reactive-data-source";
import { authConfig } from "../setup";

// ABILITIES COLLECTION
import { authConfig } from "../../setup";

const ofServiceFilter = serviceId => {
if (serviceId) {
return {
query: {
service: serviceId
}
};
}
};
// ABILITIES COLLECTION

export const abilitiesCollection = new origins.Api(
"/abilities",
Expand All @@ -23,5 +14,13 @@ export const abilitiesCollection = new origins.Api(
);

abilitiesCollection.addCustomFilter({
ofService: ofServiceFilter
ofService: serviceId => {
if (serviceId) {
return {
query: {
service: serviceId
}
};
}
}
});
109 changes: 6 additions & 103 deletions src/data-layer/services/index.js
@@ -1,103 +1,6 @@
import { origins, Selector } from "reactive-data-source";
import sortBy from "lodash.sortby";

import { authConfig } from "../setup";
import { byIdFilter } from "../helpers";

// SERVICES COLLECTION

const typeFilter = serviceType => {
if (serviceType && serviceType.length) {
return {
query: {
type: serviceType
}
};
}
};

export const servicesCollection = new origins.Api(
"/services",
{},
{
...authConfig,
defaultValue: []
}
);

servicesCollection.addCustomFilter({
type: typeFilter
});

// SELECTORS

export const modulesCollection = new Selector(
{
source: servicesCollection,
filter: () => typeFilter("module")
},
servicesResults => servicesResults,
[]
);

export const pluginsCollection = new Selector(
{
source: servicesCollection,
filter: () => typeFilter("plugin")
},
servicesResults => servicesResults,
[]
);

const searchByNameAndDesc = (servicesResults, search) => {
if (!search) {
return servicesResults;
}
return servicesResults.filter(
service => service.name.indexOf(search) > -1 || service.description.indexOf(search) > -1
);
};

export const modulesCollectionFiltered = new Selector(modulesCollection, searchByNameAndDesc, []);
export const pluginsCollectionFiltered = new Selector(pluginsCollection, searchByNameAndDesc, []);

const sortAndOrderBy = (servicesResults, filter) => {
const results = sortBy(servicesResults, (filter && filter.sortBy) || "name");
if (filter.reverse) {
return results.reverse();
}
return results;
};

export const modulesCollectionFilteredAndSorted = new Selector(
{
source: modulesCollectionFiltered,
filter: ({ search }) => search
},
sortAndOrderBy,
[]
);

export const pluginsCollectionFilteredAndSorted = new Selector(
{
source: pluginsCollectionFiltered,
filter: ({ search }) => search
},
sortAndOrderBy,
[]
);

// SERVICE MODEL

export const servicesModel = new origins.Api(
"/services/:id",
{},
{
...authConfig,
defaultValue: {}
}
);

servicesModel.addCustomFilter({
byId: byIdFilter
});
export * from "./abilities/origins";
export * from "./logs/origins";
export * from "./logs/selectors";
export * from "./service/origins";
export * from "./services/origins";
export * from "./services/selectors";
12 changes: 12 additions & 0 deletions src/data-layer/services/logs/origins.js
@@ -0,0 +1,12 @@
import { origins } from "reactive-data-source";

import { authConfig } from "../../setup";

export const logs = new origins.Api(
"/logs",
{},
{
...authConfig,
defaultValue: []
}
);
@@ -1,20 +1,12 @@
import { origins, Selector } from "reactive-data-source";
import { Selector } from "reactive-data-source";

import { authConfig } from "../setup";
import { display, formatDate } from "../helpers";
import { abilitiesCollection } from "../abilities";
import { servicesCollection } from "../services";
import { displayValue, formatDate } from "../../helpers";

const NUMBER_OF_LOGS = 100;
import { abilitiesCollection } from "../abilities/origins";
import { servicesCollection } from "../services/origins";
import { logs } from "./origins";

export const logs = new origins.Api(
"/logs",
{},
{
...authConfig,
defaultValue: []
}
);
const NUMBER_OF_LOGS = 100;

export const lastLogs = new Selector(
logs,
Expand All @@ -35,7 +27,7 @@ export const lastLogsDetails = new Selector(
dateTime: formatDate(log.createdAt),
module: (service && service.name) || "-",
ability: (ability && ability.name) || "-",
data: display(log.data)
data: displayValue(log.data)
};
});
},
Expand Down
20 changes: 20 additions & 0 deletions src/data-layer/services/service/origins.js
@@ -0,0 +1,20 @@
import { origins } from "reactive-data-source";

import { authConfig } from "../../setup";

import { byIdFilter } from "../../helpers";

// SERVICE MODELS

export const serviceModels = new origins.Api(
"/services/:id",
{},
{
...authConfig,
defaultValue: {}
}
);

serviceModels.addCustomFilter({
byId: byIdFilter
});
9 changes: 9 additions & 0 deletions src/data-layer/services/services/filters.js
@@ -0,0 +1,9 @@
export const typeFilter = serviceType => {
if (serviceType && serviceType.length) {
return {
query: {
type: serviceType
}
};
}
};
20 changes: 20 additions & 0 deletions src/data-layer/services/services/origins.js
@@ -0,0 +1,20 @@
import { origins } from "reactive-data-source";

import { authConfig } from "../../setup";

import { typeFilter } from "./filters";

// SERVICES COLLECTION

export const servicesCollection = new origins.Api(
"/services",
{},
{
...authConfig,
defaultValue: []
}
);

servicesCollection.addCustomFilter({
type: typeFilter
});
62 changes: 62 additions & 0 deletions src/data-layer/services/services/selectors.js
@@ -0,0 +1,62 @@
import { Selector } from "reactive-data-source";
import sortBy from "lodash.sortby";

import { servicesCollection } from "./origins";

import { typeFilter } from "./filters";

export const modulesCollection = new Selector(
{
source: servicesCollection,
filter: () => typeFilter("module")
},
servicesResults => servicesResults,
[]
);

export const pluginsCollection = new Selector(
{
source: servicesCollection,
filter: () => typeFilter("plugin")
},
servicesResults => servicesResults,
[]
);

const searchByNameAndDesc = (servicesResults, search) => {
if (!search) {
return servicesResults;
}
return servicesResults.filter(
service => service.name.indexOf(search) > -1 || service.description.indexOf(search) > -1
);
};

export const modulesCollectionFiltered = new Selector(modulesCollection, searchByNameAndDesc, []);
export const pluginsCollectionFiltered = new Selector(pluginsCollection, searchByNameAndDesc, []);

const sortAndOrderBy = (servicesResults, filter) => {
const results = sortBy(servicesResults, (filter && filter.sortBy) || "name");
if (filter.reverse) {
return results.reverse();
}
return results;
};

export const modulesCollectionFilteredAndSorted = new Selector(
{
source: modulesCollectionFiltered,
filter: ({ search }) => search
},
sortAndOrderBy,
[]
);

export const pluginsCollectionFilteredAndSorted = new Selector(
{
source: pluginsCollectionFiltered,
filter: ({ search }) => search
},
sortAndOrderBy,
[]
);

0 comments on commit 688361b

Please sign in to comment.