Add customer and contact record management features

This commit is contained in:
Ken Yasue
2025-03-25 06:49:21 +01:00
parent 4e9d81924a
commit 1866d84a86
13 changed files with 917 additions and 6 deletions

View File

@ -2,13 +2,14 @@ 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],
entities: [User, Post, Customer, ContactRecord],
synchronize: true, // Set to false in production
logging: process.env.NODE_ENV === 'development',
};
@ -21,7 +22,7 @@ const mysqlConfig: DataSourceOptions = {
username: process.env.DB_USERNAME || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_DATABASE || 'kantancms',
entities: [User, Post, Customer],
entities: [User, Post, Customer, ContactRecord],
synchronize: false, // Always false in production
logging: process.env.NODE_ENV === 'development',
};
@ -34,7 +35,7 @@ const postgresConfig: DataSourceOptions = {
username: process.env.DB_USERNAME || 'postgres',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_DATABASE || 'kantancms',
entities: [User, Post, Customer],
entities: [User, Post, Customer, ContactRecord],
synchronize: false, // Always false in production
logging: process.env.NODE_ENV === 'development',
};

View File

@ -0,0 +1,27 @@
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import type { Customer } from './Customer';
@Entity('contact_records')
export class ContactRecord {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
customerId: string;
@Column()
contactType: string;
@Column('text')
notes: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
modifiedAt: Date;
@ManyToOne('Customer', 'contactRecords')
@JoinColumn({ name: 'customerId' })
customer: Customer;
}

View File

@ -1,4 +1,5 @@
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, OneToMany } from 'typeorm';
import type { ContactRecord } from './ContactRecord';
@Entity('customers')
export class Customer {
@ -19,4 +20,7 @@ export class Customer {
@UpdateDateColumn()
modifiedAt: Date;
@OneToMany('ContactRecord', 'customer')
contactRecords: ContactRecord[];
}

View File

@ -35,3 +35,4 @@ export const getDataSource = async () => {
export * from './entities/User';
export * from './entities/Post';
export * from './entities/Customer';
export * from './entities/ContactRecord';