Skip to content

Instantly share code, notes, and snippets.

@alanfoandrade
Created April 23, 2021 10:32
Show Gist options
  • Save alanfoandrade/0d149c9854f98135d8d994aafba953c1 to your computer and use it in GitHub Desktop.
Save alanfoandrade/0d149c9854f98135d8d994aafba953c1 to your computer and use it in GitHub Desktop.
import { Request, Response } from 'express';
import { container } from 'tsyringe';
import { classToClass } from 'class-transformer';
import CreateUserService from '@modules/users/services/CreateUserService';
export default class UsersController {
public async create(request: Request, response: Response): Promise<Response> {
const { name, email, password } = request.body;
const createUser = container.resolve(CreateUserService);
const user = await createUser.execute({
name,
email,
password,
});
return response.json(classToClass(user));
}
}
import {
Entity,
Column,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
} from 'typeorm';
import { Exclude, Expose } from 'class-transformer';
@Entity('users')
class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Column()
email: string;
@Column()
@Exclude()
password: string;
@Column()
avatar: string;
@CreateDateColumn()
created_at: Date;
@UpdateDateColumn()
updated_at: Date;
@Expose({ name: 'avatar_url' })
getAvatarUrl(): string | null {
return `${process.env.STORAGE_URL}/files/${this.avatar}`;
}
}
export default User;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment