initial commit

This commit is contained in:
Ken Yasue
2025-03-25 06:19:44 +01:00
parent b97fa96c25
commit 9aef2ad891
71 changed files with 13016 additions and 1 deletions

View File

@ -0,0 +1,57 @@
import { DataSource, DataSourceOptions } from 'typeorm';
import { User } from './entities/User';
import { Post } from './entities/Post';
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],
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],
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],
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());