I have two tables: User and Settings. Table Settings refers to table User. Table Settings has FK user_id. How to make it so that when creating a user using createQueryBuilder, an entry is automatically entered into the table Settings?
user.entity.ts:
@Entity('users')
export class User {
@PrimaryColumn({ type: 'text' })
public id: string;
@Column({ unique: true, nullable: true })
public username: string;
@Column({ default: 'user' })
public role: string;
@Column({ default: false })
public is_banned: boolean;
@CreateDateColumn()
public created_at: Date;
@UpdateDateColumn()
public updated_at: Date;
}
settings.entity.ts:
@Entity('settings')
export class Settings {
@PrimaryGeneratedColumn()
public id: number;
@Column({ default: false })
public video_mode: boolean;
@CreateDateColumn()
public created_at: Date;
@UpdateDateColumn()
public updated_at: Date;
@OneToOne(() => User, {
eager: true,
cascade: ['insert'],
onDelete: 'CASCADE'
})
@JoinColumn({ name: 'user_id' })
public user_id: User;
}
My query:
public async add(dto: CreateUserDto) {
return this.repository.createQueryBuilder('user')
.insert()
.into(User)
.values(dto)
.orUpdate(['id', 'username', 'updated_at'], ['id'])
.returning('*')
.execute()
.then((data) => data.generatedMaps[0]);
}
Here I insert a user and if such an id already exists, then I update its data and return it back. Now I also need to add a new entry to the table Settings . How can I implement this in my request?