Add customer and contact record management features
This commit is contained in:
@ -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',
|
||||
};
|
||||
|
||||
27
src/lib/database/entities/ContactRecord.ts
Normal file
27
src/lib/database/entities/ContactRecord.ts
Normal 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;
|
||||
}
|
||||
@ -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[];
|
||||
}
|
||||
|
||||
@ -35,3 +35,4 @@ export const getDataSource = async () => {
|
||||
export * from './entities/User';
|
||||
export * from './entities/Post';
|
||||
export * from './entities/Customer';
|
||||
export * from './entities/ContactRecord';
|
||||
|
||||
Reference in New Issue
Block a user