오늘의 목표
- Erd 수정
- 명세서
- 회원가입 api
- 로그인, 소셜로그인
- 깃허브 테스트 레포지토리 만들어서 실험
- 깃허브 boilelr plate merge
포인트를 아예 삭제하고, 쿠폰과 상품 태그 등 회의 후 여러가지 요소를 추가하였다.
회원가입은 종현님께서 제작해 주셨고, 나는 결제 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가 무서워 진행하지 못하였다. 내일은 미루지말고 사용해볼 것이다!
아침에 정한 목표를 모두 이루지는 못하였지만 다른 사람들을 도우며 많은 것을 배울 수 있던 하루였다.