2023-05-23 04:44:21 +12:00
|
|
|
import { Datasource } from "@budibase/types"
|
2023-05-18 08:32:50 +12:00
|
|
|
import { DatasourceRequest } from "../../types"
|
2023-05-23 04:44:21 +12:00
|
|
|
import { generator } from "../../shared"
|
|
|
|
|
2023-04-07 01:22:21 +12:00
|
|
|
// Add information about the data source to the fixtures file from 1password
|
2023-05-18 08:32:50 +12:00
|
|
|
export const mongoDB = (): DatasourceRequest => {
|
2023-04-07 01:22:21 +12:00
|
|
|
return {
|
|
|
|
datasource: {
|
|
|
|
name: "MongoDB",
|
|
|
|
source: "MONGODB",
|
|
|
|
type: "datasource",
|
|
|
|
config: {
|
2023-04-12 02:44:00 +12:00
|
|
|
connectionString: process.env.MONGODB_CONNECTION_STRING,
|
|
|
|
db: process.env.MONGODB_DB,
|
2023-04-07 01:22:21 +12:00
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
fetchSchema: false,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-18 08:32:50 +12:00
|
|
|
export const postgresSQL = (): DatasourceRequest => {
|
2023-04-07 01:22:21 +12:00
|
|
|
return {
|
|
|
|
datasource: {
|
|
|
|
name: "PostgresSQL",
|
|
|
|
plus: true,
|
|
|
|
source: "POSTGRES",
|
|
|
|
type: "datasource",
|
|
|
|
config: {
|
2023-04-12 02:44:00 +12:00
|
|
|
database: process.env.POSTGRES_DB,
|
|
|
|
host: process.env.POSTGRES_HOST,
|
|
|
|
password: process.env.POSTGRES_PASSWORD,
|
|
|
|
port: process.env.POSTGRES_PORT,
|
|
|
|
schema: "public",
|
|
|
|
user: process.env.POSTGRES_USER,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
fetchSchema: true,
|
|
|
|
}
|
|
|
|
}
|
2023-05-18 08:32:50 +12:00
|
|
|
export const mariaDB = (): DatasourceRequest => {
|
2023-04-12 02:44:00 +12:00
|
|
|
return {
|
|
|
|
datasource: {
|
|
|
|
name: "MariaDB",
|
|
|
|
plus: true,
|
|
|
|
source: "MYSQL",
|
|
|
|
type: "datasource",
|
|
|
|
config: {
|
|
|
|
database: process.env.MARIADB_DB,
|
|
|
|
host: process.env.MARIADB_HOST,
|
|
|
|
password: process.env.MARIADB_PASSWORD,
|
|
|
|
port: process.env.MARIADB_PORT,
|
2023-04-07 01:22:21 +12:00
|
|
|
schema: "public",
|
2023-04-12 02:44:00 +12:00
|
|
|
user: process.env.MARIADB_USER,
|
2023-04-07 01:22:21 +12:00
|
|
|
},
|
|
|
|
},
|
|
|
|
fetchSchema: true,
|
|
|
|
}
|
|
|
|
}
|
2023-04-15 04:35:13 +12:00
|
|
|
|
2023-05-18 08:32:50 +12:00
|
|
|
export const restAPI = (): DatasourceRequest => {
|
2023-04-15 04:35:13 +12:00
|
|
|
return {
|
|
|
|
datasource: {
|
|
|
|
name: "RestAPI",
|
|
|
|
source: "REST",
|
|
|
|
type: "datasource",
|
|
|
|
config: {
|
|
|
|
defaultHeaders: {},
|
|
|
|
rejectUnauthorized: true,
|
|
|
|
url: process.env.REST_API_BASE_URL,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
fetchSchema: false,
|
|
|
|
}
|
|
|
|
}
|
2023-05-23 04:44:21 +12:00
|
|
|
|
|
|
|
export const generateRelationshipForMySQL = (
|
|
|
|
updatedDataSourceJson: any
|
|
|
|
): Datasource => {
|
|
|
|
const entities = updatedDataSourceJson!.datasource!.entities!
|
|
|
|
const datasourceId = updatedDataSourceJson!.datasource!._id!
|
|
|
|
const relationShipBody = {
|
|
|
|
...updatedDataSourceJson.datasource,
|
|
|
|
entities: {
|
|
|
|
...updatedDataSourceJson.datasource.entities,
|
|
|
|
employees: {
|
|
|
|
...entities.employees,
|
|
|
|
schema: {
|
|
|
|
...entities.employees.schema,
|
|
|
|
salaries: {
|
|
|
|
tableId: `${datasourceId}__salaries`,
|
|
|
|
name: "salaries",
|
|
|
|
relationshipType: "many-to-one",
|
|
|
|
fieldName: "salary",
|
|
|
|
type: "link",
|
|
|
|
main: true,
|
|
|
|
_id: generator.string(),
|
|
|
|
foreignKey: "emp_no",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
titles: {
|
|
|
|
...entities.titles,
|
|
|
|
schema: {
|
|
|
|
...entities.titles.schema,
|
|
|
|
employees: {
|
|
|
|
tableId: `${datasourceId}__employees`,
|
|
|
|
name: "employees",
|
|
|
|
relationshipType: "one-to-many",
|
|
|
|
fieldName: "emp_no",
|
|
|
|
type: "link",
|
|
|
|
main: true,
|
|
|
|
_id: generator.string(),
|
|
|
|
foreignKey: "emp_no",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
return relationShipBody
|
|
|
|
}
|