teamproject-day03

Antipiebse·2022년 5월 11일
0

팀프로젝트 회고

목록 보기
3/6

오늘의 목표

  • Erd 수정
  • 명세서
  • 회원가입 api
  • 로그인, 소셜로그인
  • 깃허브 테스트 레포지토리 만들어서 실험
  • 깃허브 boilelr plate merge

erd수정

포인트를 아예 삭제하고, 쿠폰과 상품 태그 등 회의 후 여러가지 요소를 추가하였다.

회원가입은 종현님께서 제작해 주셨고, 나는 결제 api를 구현하였다.

// service
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Payment, PAYMENT_STATUS_ENUM } from './entities/payment.entity';

@Injectable()
export class PaymentService {
  constructor(
    @InjectRepository(Payment)
    private readonly paymentRepository: Repository<Payment>,
  ) {}
  async create({ impUid, price }) {
    const paymentImp = this.paymentRepository.create({
      impUid,
      price,
      status: PAYMENT_STATUS_ENUM.PAYMENT,
      discountAmount: 0,
    });
    await this.paymentRepository.save(paymentImp);

    return paymentImp;
  }
}
//resolver
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
import { Payment } from './entities/payment.entity';
import { PaymentService } from './payments.service';

@Resolver()
export class PaymentResolver {
  constructor(private readonly paymentService: PaymentService) {}

  @Mutation(() => Payment)
  async Payment(@Args('impUid') impUid: string, @Args('price') price: number) {
    return await this.paymentService.create({ price, impUid });
  }
}
// 결제 엔티티
import { Field, Int, ObjectType, registerEnumType } from '@nestjs/graphql';
import { Product } from 'src/apis/products/entities/product.entity';
import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  ManyToOne,
  CreateDateColumn,
} from 'typeorm';

export enum PAYMENT_STATUS_ENUM {
  PAYMENT = 'PAYMENT',
  CANCEL = 'CANCEL',
}
//결제는 수정과 삭제가 없고 등록만 가능해야한다!
registerEnumType(PAYMENT_STATUS_ENUM, {
  name: 'PAYMENT_STATUS_ENUM',
});

@Entity()
@ObjectType()
export class Payment {
  @PrimaryGeneratedColumn('uuid')
  @Field(() => String)
  id: string;

  @Column()
  @Field(() => Int)
  price: number;

  // @Column()
  // @Field(() => String)
  // coupon: string;

  @Column()
  @Field(() => Int)
  discountAmount: number;

  @Column()
  @Field(() => String)
  impUid: string;

  @Column({ type: 'enum', enum: PAYMENT_STATUS_ENUM })
  @Field(() => PAYMENT_STATUS_ENUM)
  status: PAYMENT_STATUS_ENUM;

  @CreateDateColumn()
  @Field(() => Date)
  paymentDate: Date;
}

명세서를 작성하기로 했지만 여러가지 수정 사항이 있어 내일 팀 회의를 통해 결정하기로 하였다. 그리고 아직 팀 레포지토리에 merge를 하고 여러가지 작업하는 건 공부를 덜해서 그런지 conflict가 무서워 진행하지 못하였다. 내일은 미루지말고 사용해볼 것이다!

마치며

아침에 정한 목표를 모두 이루지는 못하였지만 다른 사람들을 도우며 많은 것을 배울 수 있던 하루였다.

profile
백엔드 주니어 개발자

0개의 댓글