Skip to content

Commit

Permalink
update decoders schema
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianoEger committed Jun 7, 2024
1 parent 6823777 commit 3f2af11
Show file tree
Hide file tree
Showing 10 changed files with 54 additions and 25 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"scripts": {
"test": "vitest",
"linter": "biome lint --diagnostic-level=error .",
"start": "npx --yes tsx src/main.ts"
"start": "npx --yes tsx --env-file .env src/main.ts"
},
"devDependencies": {
"@biomejs/biome": "1.7.3",
Expand Down
8 changes: 4 additions & 4 deletions src/database/data-db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ export async function up(knex: Knex): Promise<void> {
table.text("documentation_url");
table.text('device_parameters'); // JSON stringify
table.text("middleware_endpoint");
table.binary("logo");
table.binary("icon");
table.binary("banner");
table.text("logo");
table.text("icon");
table.text("banner");
table.binary("payload_decoder");

// creating indexes
Expand All @@ -35,7 +35,7 @@ export async function up(knex: Knex): Promise<void> {
table.text("install_text");
table.text("install_end_text");
table.text("device_annotation");
table.binary("logo");
table.text("logo");
table.binary("payload_decoder");

// creating indexes
Expand Down
14 changes: 14 additions & 0 deletions src/helpers/create-asset-url.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import path from "node:path";
import { env } from "../validator/env";

function generateAssetURL(decoderId: string, assetPath?: string) {
if (!assetPath) {
return null;
}

const filename = path.join(decoderId, assetPath);

return `${env.DECODERS_ASSET_DOMAIN}/${filename}`;
}

export { generateAssetURL }
7 changes: 4 additions & 3 deletions src/helpers/create-connectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import { readFileFromPath } from "../helpers/read-file";
import { buildTS } from "../helpers/build-ts";
import { zConnector } from "../validator/connector";
import { resolvePayload } from "./resolve-payload";
import { generateAssetURL } from "./create-asset-url";

async function createConnectorVersion(knexClient: Knex, mainObj: Connector, filePath: string) {
const versionKeys = Object.keys(mainObj.versions);

if (versionKeys.length > 1) {
throw `The decoders system allows only one version for now, it will be available soon. ${filePath}`;

}

for (const version of versionKeys) {
Expand All @@ -25,8 +25,9 @@ async function createConnectorVersion(knexClient: Knex, mainObj: Connector, file

const detailsData: ConnectorDetails = JSON.parse(fs.readFileSync(detailsPath, "utf8"));

const id = generateID({ name: mainObj.name, version: version }, true)
const data = {
id: generateID({ name: mainObj.name, version: version }, true),
id,
name: mainObj.name,
version: version,
description: readFileFromPath(`${filePath}/${version}`, detailsData.description, true),
Expand All @@ -35,7 +36,7 @@ async function createConnectorVersion(knexClient: Knex, mainObj: Connector, file
install_text: detailsData?.install_text,
install_end_text: detailsData?.install_end_text,
device_annotation: detailsData?.device_annotation,
logo: readFileFromPath(filePath, mainObj?.images?.logo),
logo: generateAssetURL(id, mainObj?.images?.logo),
payload_decoder: resolvePayload(filePath, mainObj.versions[version].src),
};

Expand Down
10 changes: 6 additions & 4 deletions src/helpers/create-networks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { readFileFromPath } from "../helpers/read-file";
import { buildTS } from "../helpers/build-ts";
import { zNetwork } from "../validator/network";
import { resolvePayload } from "./resolve-payload";
import { generateAssetURL } from "./create-asset-url";

async function createNetworkVersion(knexClient: Knex, mainObj: Network, filePath: string) {
const versionKeys = Object.keys(mainObj.versions);
Expand All @@ -28,18 +29,19 @@ async function createNetworkVersion(knexClient: Knex, mainObj: Network, filePath

const detailsData: NetworkDetails = JSON.parse(fs.readFileSync(detailsPath, "utf8"));

const id = generateID({ name: mainObj.name, version: version })
const data = {
id: generateID({ name: mainObj.name, version: version }),
id,
name: mainObj.name,
version: version,
middleware_endpoint: detailsData?.middleware_endpoint,
documentation_url: detailsData?.documentation_url,
device_parameters: detailsData?.device_parameters || [],
serial_number: detailsData?.serial_number_config || {},
description: readFileFromPath(`${filePath}/${version}`, detailsData.description, true),
logo: readFileFromPath(filePath, mainObj?.images?.logo),
banner: readFileFromPath(filePath, mainObj?.images?.banner),
icon: readFileFromPath(filePath, mainObj?.images?.icon),
logo: generateAssetURL(id, mainObj?.images?.logo),
banner: generateAssetURL(id, mainObj?.images?.banner),
icon: generateAssetURL(id, mainObj?.images?.icon),
payload_decoder: resolvePayload(filePath, mainObj.versions[version].src),
};

Expand Down
4 changes: 2 additions & 2 deletions src/validator/connector.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ describe('zConnector schema', () => {
install_end_text: 'End of installation instructions',
device_annotation: 'Device annotation text',
device_parameters: [{}],
logo: Buffer.from('logo data'),
logo: "https://file.tago.io/123456789012345678901234/logo.png",
payload_decoder: Buffer.from('decoder data'),
};

Expand Down Expand Up @@ -50,7 +50,7 @@ describe('zConnector schema', () => {
expect(result.error.issues[1].message).toBe('Expected array, received object');

expect(result.error.issues[2].path[0]).toBe('logo');
expect(result.error.issues[2].message).toBe('Invalid input');
expect(result.error.issues[2].message).toBe('Expected string, received number');

expect(result.error.issues[3].path[0]).toBe('payload_decoder');
expect(result.error.issues[3].message).toBe('Invalid Payload Parser');
Expand Down
2 changes: 1 addition & 1 deletion src/validator/connector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const zConnector = z.object({
install_end_text: z.string().nullish(),
device_annotation: z.string().nullish(),
device_parameters: zIntegrationParameters.nullish(),
logo: zBufferOrString.nullish(),
logo: z.string().nullish(),
payload_decoder: zBufferPayloadSize(64).nullish(),
});

Expand Down
12 changes: 12 additions & 0 deletions src/validator/env.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { z } from "zod";

const zEnv = z.object({
DECODERS_ASSET_DOMAIN: z.string(),
});

console.log(process.env?.DECODERS_ASSET_DOMAIN);

// eslint-disable-next-line no-process-env
const envParsed = zEnv.parse(process.env);

export { envParsed as env };
10 changes: 5 additions & 5 deletions src/validator/network.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,20 @@ describe('zNetwork schema', () => {
middleware_endpoint: 'middleware.example.com',
serial_number: {
case: 'upper',
image: Buffer.from('image data'),
image: "https://file.tago.io/123456789012345678901234/image.png",
label: 'Test Label',
mask: 'Test Mask',
required: true,
},
device_parameters: null,
icon: Buffer.from('icon data'),
logo: 'logo data',
banner: Buffer.from('banner data'),
icon: "https://file.tago.io/123456789012345678901234/icon.png",
logo: "https://file.tago.io/123456789012345678901234/logo.png",
banner: "https://file.tago.io/123456789012345678901234/banner.png",
payload_decoder: Buffer.from('decoder data'),
};

const result = zNetwork.safeParse(validData);

console.log(result.error);
expect(result.success).toBe(true);
});

Expand Down
10 changes: 5 additions & 5 deletions src/validator/network.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { z } from "zod";
import { zBufferPayloadSize, zDomain, zBufferOrString } from "./common";
import { zBufferPayloadSize, zDomain } from "./common";
import { zIntegrationParameters } from "./integration-parameters";

const zSerialNumber = z.object({
case: z.enum(["lower", "upper", ""]).optional(),
image: zBufferOrString.optional(),
image: z.string().nullish(),
label: z.string().max(100).optional(),
mask: z.string().max(100).optional(),
required: z.boolean().default(false),
Expand All @@ -24,9 +24,9 @@ const zNetwork = z.object({
middleware_endpoint: zDomain.nullish(),
serial_number: zSerialNumber.nullish(),
device_parameters: zIntegrationParameters.nullish(),
icon: zBufferOrString.nullish(),
logo: zBufferOrString.nullish(),
banner: zBufferOrString.nullish(),
icon: z.string().nullish(),
logo: z.string().nullish(),
banner: z.string().nullish(),
payload_decoder: zBufferPayloadSize(64).nullish(),
});

Expand Down

0 comments on commit 3f2af11

Please sign in to comment.