mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-28 19:00:59 +03:00
Multiple Database Support
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -10,7 +10,7 @@ export class ChatFlow implements IChatFlow {
|
||||
@Column()
|
||||
name: string
|
||||
|
||||
@Column()
|
||||
@Column({ type: "text" })
|
||||
flowData: string
|
||||
|
||||
@Column({ nullable: true })
|
||||
|
||||
@@ -14,7 +14,7 @@ export class ChatMessage implements IChatMessage {
|
||||
@Column()
|
||||
chatflowid: string
|
||||
|
||||
@Column()
|
||||
@Column({ type: "text" })
|
||||
content: string
|
||||
|
||||
@Column({ nullable: true })
|
||||
|
||||
@@ -10,7 +10,7 @@ export class Tool implements ITool {
|
||||
@Column()
|
||||
name: string
|
||||
|
||||
@Column()
|
||||
@Column({ type: "text" })
|
||||
description: string
|
||||
|
||||
@Column()
|
||||
|
||||
Reference in New Issue
Block a user