Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 74 additions & 3 deletions funks.js
Original file line number Diff line number Diff line change
Expand Up @@ -976,13 +976,15 @@ generateSections = async function (sections, opts, dir_write) {
case "models-cassandra":
case "models-mongodb":
case "models-amazonS3":
case "models-trino":
//adapters
case "sql-adapter":
case "zendro-adapters":
case "generic-adapter":
case "cassandra-adapter":
case "mongodb-adapter":
case "amazonS3-adapter":
case "trino-adapter":
file_name =
dir_write + "/" + section.dir + "/" + section.fileName + ".js";
break;
Expand Down Expand Up @@ -1086,6 +1088,8 @@ getStorageType = function (dataModel) {
case "cassandra":
case "mongodb":
case "amazon-s3":
case "trino":
case "presto":
//adapters
case "sql-adapter":
case "ddm-adapter":
Expand All @@ -1094,6 +1098,8 @@ getStorageType = function (dataModel) {
case "cassandra-adapter":
case "mongodb-adapter":
case "amazon-s3-adapter":
case "trino-adapter":
case "presto-adapter":
//ok
break;

Expand All @@ -1102,9 +1108,12 @@ getStorageType = function (dataModel) {
valid = false;
console.error(
colors.red(
`ERROR: The attribute 'storageType' has an invalid value. \nOne of the following types is expected: [sql, distributed-data-model, zendro-server, generic, sql-adapter, ddm-adapter, zendro-webservice-adapter, generic-adapter]. But '${
dataModel.storageType
}' was obtained on ${
`ERROR: The attribute 'storageType' has an invalid value. \n
One of the following types is expected: [sql, distributed-data-model,
zendro-server, generic, sql-adapter, ddm-adapter, zendro-webservice-adapter, generic-adapter,
cassandra, mongodb, amazon-s3, trino, presto, cassandra-adapter, mongodb-adapter,
amazon-s3-adapter, trino-adapter, presto-adapter].
But '${dataModel.storageType}' was obtained on ${
dataModel.adapterName !== undefined ? "adapter" : "model"
} '${
dataModel.adapterName !== undefined
Expand Down Expand Up @@ -1153,6 +1162,8 @@ module.exports.generateCode = async function (json_dir, dir_write, options) {
"models/cassandra",
"models/mongodb",
"models/amazonS3",
"models/trino",
"models/presto",
];
let models = [];
let adapters = [];
Expand Down Expand Up @@ -1457,6 +1468,42 @@ module.exports.generateCode = async function (json_dir, dir_write, options) {
];
break;

case "trino":
sections = [
{ dir: "schemas", template: "schemas", fileName: opts.nameLc },
{ dir: "resolvers", template: "resolvers", fileName: opts.nameLc },
{
dir: "models/trino",
template: "models-trino",
fileName: opts.nameLc,
},
{
dir: "validations",
template: "validations",
fileName: opts.nameLc,
},
{ dir: "patches", template: "patches", fileName: opts.nameLc },
];
break;

case "presto":
sections = [
{ dir: "schemas", template: "schemas", fileName: opts.nameLc },
{ dir: "resolvers", template: "resolvers", fileName: opts.nameLc },
{
dir: "models/presto",
template: "models-trino",
fileName: opts.nameLc,
},
{
dir: "validations",
template: "validations",
fileName: opts.nameLc,
},
{ dir: "patches", template: "patches", fileName: opts.nameLc },
];
break;

case "zendro-webservice-adapter":
sections = [
{
Expand Down Expand Up @@ -1539,6 +1586,28 @@ module.exports.generateCode = async function (json_dir, dir_write, options) {
{ dir: "patches", template: "patches", fileName: opts.adapterName },
];
break;

case "trino-adapter":
sections = [
{
dir: "models/adapters",
template: "trino-adapter",
fileName: opts.adapterName,
},
{ dir: "patches", template: "patches", fileName: opts.adapterName },
];
break;

case "presto-adapter":
sections = [
{
dir: "models/adapters",
template: "trino-adapter",
fileName: opts.adapterName,
},
{ dir: "patches", template: "patches", fileName: opts.adapterName },
];
break;
default:
break;
}
Expand Down Expand Up @@ -1568,6 +1637,8 @@ module.exports.generateCode = async function (json_dir, dir_write, options) {
"mongodb-adapter",
"cassandra-adapter",
"amazon-s3-adapter",
"trino-adapter",
"presto-adapter",
].includes(opts.storageType)
) {
adapters.push(opts.adapterName);
Expand Down
6 changes: 6 additions & 0 deletions lib/generators-aux.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ exports.getModelDatabase = function (dataModel) {
"cassandra-adapter": "default-cassandra",
mongodb: "default-mongodb",
"mongodb-adapter": "default-mongodb",
"amazon-s3": "default-amazonS3",
"amazon-s3-adapter": "default-amazonS3",
trino: "default-trino",
"trino-adapter": "default-trino",
presto: "default-presto",
"presto-adapter": "default-presto",
};

const storageType = dataModel.storageType.toLowerCase();
Expand Down
4 changes: 4 additions & 0 deletions test/integration_test_misc/Dockerfile.postgres2
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM postgres:11.1-alpine

COPY initUserDb2.sh /docker-entrypoint-initdb.d/initUserDb.sh
RUN chmod 755 /docker-entrypoint-initdb.d/initUserDb.sh
14 changes: 14 additions & 0 deletions test/integration_test_misc/data_models_storage_config2.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,19 @@
"database": "sciencedb_development",
"host": "gql_postgres2",
"dialect": "postgres"
},
"default-trino": {
"storageType": "trino",
"catalog":"postgresql",
"schema":"public",
"trino_host": "gql_trino",
"trino_port": "8080"
},
"default-presto": {
"storageType": "presto",
"catalog":"postgresql",
"schema":"public",
"presto_host": "gql_presto",
"presto_port": "8080"
}
}
28 changes: 26 additions & 2 deletions test/integration_test_misc/docker-compose-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,33 @@ services:
container_name: postgres2
build:
context: .
dockerfile: Dockerfile.postgres
dockerfile: Dockerfile.postgres2
ports:
- 1235:5432
networks:
- instance2

gql_presto:
image: ahanaio/prestodb-sandbox
container_name: presto1
depends_on:
- gql_postgres2
volumes:
- ./postgresql.properties:/opt/presto-server/etc/catalog/postgresql.properties
ports:
- 8081:8080
networks:
- instance2

gql_trino:
image: trinodb/trino
container_name: trino1
depends_on:
- gql_postgres2
volumes:
- ./postgresql.properties:/etc/trino/catalog/postgresql.properties
ports:
- 1235:5431
- 8080:8080
networks:
- instance2

Expand Down
72 changes: 72 additions & 0 deletions test/integration_test_misc/initUserDb2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#!/bin/bash
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER sciencedb WITH SUPERUSER PASSWORD 'sciencedb';
CREATE DATABASE sciencedb_development OWNER sciencedb;
CREATE DATABASE sciencedb_test OWNER sciencedb;
CREATE DATABASE sciencedb_production OWNER sciencedb;
EOSQL
psql -U sciencedb -d sciencedb_development <<-EOSQL
CREATE TABLE trino_doctors (
doctor_id varchar(255) PRIMARY KEY,
birthday timestamp,
experience integer,
rating float,
on_holiday boolean,
speciality text,
telephone text
);
INSERT INTO trino_doctors (doctor_id, birthday, experience, rating, on_holiday, speciality, telephone) VALUES
('d1', '1989-12-03T10:15:30.000Z', 3, 4.9, false, '["Tinnitus","Allergology"]', '[152234,137584]'),
('d2', '1977-12-03T10:15:30.000Z', 15, 5.0, false, '["Cardiology","Cardiothoracic Surgery"]', '[142234,127584]'),
('d3', '1987-12-03T10:15:30.000Z', 5, 4.8, true, '["Dermatology","Allergology"]', '[162234,177584]'),
('d4', '1988-12-03T10:15:30.000Z', 4, 4.9, false, '["Child Psychiatry","Adolescent Psychiatry"]', '[192234,197584]'),
('d5', '1986-12-03T10:15:30.000Z', 6, 4.7, true, '["Neurology"]', '[122234,187584]');

CREATE TABLE presto_doctors (
doctor_id varchar(255) PRIMARY KEY,
birthday timestamp,
experience integer,
rating float,
on_holiday boolean,
speciality text,
telephone text
);
INSERT INTO presto_doctors (doctor_id, birthday, experience, rating, on_holiday, speciality, telephone) VALUES
('d1', '1989-12-03T10:15:30.000Z', 3, 4.9, false, '["Tinnitus","Allergology"]', '[152234,137584]'),
('d2', '1977-12-03T10:15:30.000Z', 15, 5.0, false, '["Cardiology","Cardiothoracic Surgery"]', '[142234,127584]'),
('d3', '1987-12-03T10:15:30.000Z', 5, 4.8, true, '["Dermatology","Allergology"]', '[162234,177584]'),
('d4', '1988-12-03T10:15:30.000Z', 4, 4.9, false, '["Child Psychiatry","Adolescent Psychiatry"]', '[192234,197584]'),
('d5', '1986-12-03T10:15:30.000Z', 6, 4.7, true, '["Neurology"]', '[122234,187584]');

CREATE TABLE dist_trino_doctors (
doctor_id varchar(255) PRIMARY KEY,
birthday timestamp,
experience integer,
rating float,
on_holiday boolean,
speciality text,
telephone text
);
INSERT INTO dist_trino_doctors (doctor_id, birthday, experience, rating, on_holiday, speciality, telephone) VALUES
('instance1-d1', '1989-12-03T10:15:30.000Z', 3, 4.9, false, '["Tinnitus","Allergology"]', '[152234,137584]'),
('instance1-d2', '1977-12-03T10:15:30.000Z', 15, 5.0, false, '["Cardiology","Cardiothoracic Surgery"]', '[142234,127584]'),
('instance1-d3', '1987-12-03T10:15:30.000Z', 5, 4.8, true, '["Dermatology","Allergology"]', '[162234,177584]'),
('instance1-d4', '1988-12-03T10:15:30.000Z', 4, 4.9, false, '["Child Psychiatry","Adolescent Psychiatry"]', '[192234,197584]'),
('instance1-d5', '1986-12-03T10:15:30.000Z', 6, 4.7, true, '["Neurology"]', '[122234,187584]');

CREATE TABLE dist_presto_doctors (
doctor_id varchar(255) PRIMARY KEY,
birthday timestamp,
experience integer,
rating float,
on_holiday boolean,
speciality text,
telephone text
);
INSERT INTO dist_presto_doctors (doctor_id, birthday, experience, rating, on_holiday, speciality, telephone) VALUES
('instance1-d1', '1989-12-03T10:15:30.000Z', 3, 4.9, false, '["Tinnitus","Allergology"]', '[152234,137584]'),
('instance1-d2', '1977-12-03T10:15:30.000Z', 15, 5.0, false, '["Cardiology","Cardiothoracic Surgery"]', '[142234,127584]'),
('instance1-d3', '1987-12-03T10:15:30.000Z', 5, 4.8, true, '["Dermatology","Allergology"]', '[162234,177584]'),
('instance1-d4', '1988-12-03T10:15:30.000Z', 4, 4.9, false, '["Child Psychiatry","Adolescent Psychiatry"]', '[192234,197584]'),
('instance1-d5', '1986-12-03T10:15:30.000Z', 6, 4.7, true, '["Neurology"]', '[122234,187584]');
EOSQL
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"model": "dist_presto_doctor",
"storageType" : "distributed-data-model",
"registry": ["dist_presto_doctor_instance1"],
"attributes": {
"doctor_id": "String",
"birthday": "DateTime",
"experience": "Int",
"rating": "Float",
"on_holiday": "Boolean",
"speciality": "[String]",
"telephone": "[Int]"
},

"internalId" : "doctor_id"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"model": "dist_presto_doctor",
"storageType": "presto-adapter",
"adapterName": "dist_presto_doctor_instance1",
"regex": "instance1",
"attributes": {
"doctor_id": "String",
"birthday": "DateTime",
"experience": "Int",
"rating": "Float",
"on_holiday": "Boolean",
"speciality": "[String]",
"telephone": "[Int]"
},

"internalId": "doctor_id"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"model": "dist_trino_doctor",
"storageType" : "distributed-data-model",
"registry": ["dist_trino_doctor_instance1"],
"attributes": {
"doctor_id": "String",
"birthday": "DateTime",
"experience": "Int",
"rating": "Float",
"on_holiday": "Boolean",
"speciality": "[String]",
"telephone": "[Int]"
},

"internalId" : "doctor_id"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"model": "dist_trino_doctor",
"storageType": "trino-adapter",
"adapterName": "dist_trino_doctor_instance1",
"regex": "instance1",
"attributes": {
"doctor_id": "String",
"birthday": "DateTime",
"experience": "Int",
"rating": "Float",
"on_holiday": "Boolean",
"speciality": "[String]",
"telephone": "[Int]"
},

"internalId": "doctor_id"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"model": "presto_doctor",
"storageType": "presto",
"attributes": {
"doctor_id": "String",
"birthday": "DateTime",
"experience": "Int",
"rating": "Float",
"on_holiday": "Boolean",
"speciality": "[String]",
"telephone": "[Int]"
},
"internalId": "doctor_id",
"id": {
"name": "doctor_id",
"type": "String"
}
}
Loading