Multiple Database Support

This commit is contained in:
Atish Amte
2023-07-18 23:52:16 +05:30
parent 10563bd6b8
commit c5eff32cf0
8 changed files with 128 additions and 22 deletions
+52 -8
View File
@@ -142,14 +142,58 @@ export class ChildProcess {
* @returns {DataSource}
*/
async function initDB() {
const homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
const childAppDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: true,
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
let childAppDataSource;
let homePath;
switch (process.env.DATABASE_TYPE) {
case 'sqlite':
homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
childAppDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
case 'mysql':
childAppDataSource = new DataSource({
type: 'mysql',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT || '3306'),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
charset: 'utf8mb4',
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
case 'postgres':
childAppDataSource = new DataSource({
type: 'postgres',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT || '5432'),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
default:
homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
childAppDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
}
return await childAppDataSource.initialize()
}
+50 -9
View File
@@ -9,15 +9,56 @@ import { getUserHome } from './utils'
let appDataSource: DataSource
export const init = async (): Promise<void> => {
const homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
appDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: true,
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
let homePath;
switch (process.env.DATABASE_TYPE) {
case 'sqlite':
homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
appDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
case 'mysql':
appDataSource = new DataSource({
type: 'mysql',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT || '3306'),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
charset: 'utf8mb4',
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
case 'postgres':
appDataSource = new DataSource({
type: 'postgres',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT || '5432'),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
default:
homePath = process.env.DATABASE_PATH ?? path.join(getUserHome(), '.flowise')
appDataSource = new DataSource({
type: 'sqlite',
database: path.resolve(homePath, 'database.sqlite'),
synchronize: (process.env.OVERRIDE_DATABASE == 'true'),
entities: [ChatFlow, ChatMessage, Tool],
migrations: []
})
break;
}
}
export function getDataSource(): DataSource {
+1 -1
View File
@@ -10,7 +10,7 @@ export class ChatFlow implements IChatFlow {
@Column()
name: string
@Column()
@Column({ type: "text" })
flowData: string
@Column({ nullable: true })
+1 -1
View File
@@ -14,7 +14,7 @@ export class ChatMessage implements IChatMessage {
@Column()
chatflowid: string
@Column()
@Column({ type: "text" })
content: string
@Column({ nullable: true })
+1 -1
View File
@@ -10,7 +10,7 @@ export class Tool implements ITool {
@Column()
name: string
@Column()
@Column({ type: "text" })
description: string
@Column()