60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { DataSource, DataSourceOptions } from 'typeorm';
|
|
import { User } from './entities/User';
|
|
import { Post } from './entities/Post';
|
|
import { Customer } from './entities/Customer';
|
|
import { ContactRecord } from './entities/ContactRecord';
|
|
import path from 'path';
|
|
|
|
// Default configuration for SQLite (development/testing)
|
|
const sqliteConfig: DataSourceOptions = {
|
|
type: 'sqlite',
|
|
database: path.join(process.cwd(), 'data', 'database.sqlite'),
|
|
entities: [User, Post, Customer, ContactRecord],
|
|
synchronize: true, // Set to false in production
|
|
logging: process.env.NODE_ENV === 'development',
|
|
};
|
|
|
|
// MySQL configuration
|
|
const mysqlConfig: DataSourceOptions = {
|
|
type: 'mysql',
|
|
host: process.env.DB_HOST || 'localhost',
|
|
port: parseInt(process.env.DB_PORT || '3306'),
|
|
username: process.env.DB_USERNAME || 'root',
|
|
password: process.env.DB_PASSWORD || '',
|
|
database: process.env.DB_DATABASE || 'kantancms',
|
|
entities: [User, Post, Customer, ContactRecord],
|
|
synchronize: false, // Always false in production
|
|
logging: process.env.NODE_ENV === 'development',
|
|
};
|
|
|
|
// PostgreSQL configuration
|
|
const postgresConfig: DataSourceOptions = {
|
|
type: 'postgres',
|
|
host: process.env.DB_HOST || 'localhost',
|
|
port: parseInt(process.env.DB_PORT || '5432'),
|
|
username: process.env.DB_USERNAME || 'postgres',
|
|
password: process.env.DB_PASSWORD || '',
|
|
database: process.env.DB_DATABASE || 'kantancms',
|
|
entities: [User, Post, Customer, ContactRecord],
|
|
synchronize: false, // Always false in production
|
|
logging: process.env.NODE_ENV === 'development',
|
|
};
|
|
|
|
// Select the database configuration based on environment variable
|
|
const getConfig = (): DataSourceOptions => {
|
|
const dbType = process.env.DB_TYPE || 'sqlite';
|
|
|
|
switch (dbType) {
|
|
case 'mysql':
|
|
return mysqlConfig;
|
|
case 'postgres':
|
|
return postgresConfig;
|
|
case 'sqlite':
|
|
default:
|
|
return sqliteConfig;
|
|
}
|
|
};
|
|
|
|
// Create and export the DataSource
|
|
export const AppDataSource = new DataSource(getConfig());
|