Skip to content

Instantly share code, notes, and snippets.

@alanfoandrade
Created December 2, 2020 15:12
Show Gist options
  • Save alanfoandrade/184d76a4ca320c32d19b1d60c1e4f61e to your computer and use it in GitHub Desktop.
Save alanfoandrade/184d76a4ca320c32d19b1d60c1e4f61e to your computer and use it in GitHub Desktop.
QueryBuilder
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
OneToMany,
} from 'typeorm';
import UserXCompany from '@modules/users/infra/typeorm/entities/UserXCompany';
@Entity('companies')
class Company {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
corporate_name: string;
@Column()
fancy_name: string;
@Column()
document: string;
@Column()
email: string;
@Column('boolean')
active: boolean;
@Column('timestamp with time zone')
deleted_at: Date;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
@OneToMany(() => UserXCompany, (user_company) => user_company.company)
company_users: UserXCompany[];
}
export default Company;
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
OneToMany,
} from 'typeorm';
import UserXCompany from './UserXCompany';
@Entity('users')
class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
first_name: string;
@Column()
last_name: string;
@Column()
document: string;
@Column()
email?: string;
@Column('boolean')
active: boolean;
@Column({
type: 'varchar',
default: 'employee',
})
role: 'admin' | 'manager' | 'employee';
@Column()
password: string;
@Column('timestamp with time zone')
deleted_at?: Date;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
@OneToMany(() => UserXCompany, (user_company) => user_company.user, {
cascade: ['insert', 'update'],
})
user_companies: UserXCompany[];
}
export default User;
import {
Entity,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
Column,
} from 'typeorm';
import Company from '@modules/companies/infra/typeorm/entities/Company';
import User from './User';
@Entity('users_x_companies')
class UserXCompany {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column('uuid')
user_id: string;
@ManyToOne(() => User, (user) => user.user_companies)
@JoinColumn({ name: 'user_id' })
user: User;
@Column('uuid')
company_id: string;
@ManyToOne(() => Company, (company) => company.company_users)
@JoinColumn({ name: 'company_id' })
company: Company;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
}
export default UserXCompany;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment