알바콘 개발일기 - Day 02

코드 굽는 제빵사·2020년 12월 6일
0

개발일기

목록 보기
3/13
post-thumbnail

42Seoul의 동료인 seohchoi가 알바콘의 케릭터를 만들어 주셨습니다. 위의 케릭터는 초안으로
완성해서 주셨는데요. 그림 실력이 정말 대단하셨어요. 신기하게도 요구사항을 듣자 마자 비슷하게 만들어 내는 그림의 연금술사 같았어요. 피드백을 달라고 하셨는데 드릴 피드백이 없어서 제가 대충 생각 하는것 처럼 보였을까 걱정이 되었었답니다. 처음 하는 프로젝트에 더욱 애정을 쏟기 위해 저만의 장치를 만드는 것이죠!

프로젝트 구조 : 밥아저씨의 클린아키텍처
repository pattern : 레포지토리 패턴 이해하기

Repository Pattern

애플리케이션, 데이터베이스의 로직이 함께 있다면 휠씬 더 복잡해지고 테스트 및 유지 관리가 어렵습니다.
이러한 문제를 해결하기 위해 입증 된 패턴인 Repository pattern을 사용 하고자 합니다. 이를 통해 코드를 더 간단하고 쉽게 새기능을 추가 할 수 있습니다. 그리고 데이터베이스와 스키마를 추후에 결정 할 수 있게 됩니다. 덕분에 로직 개발에 더욱 집중 할 수 있게 됩니다.

Go의 인터페이스를 활용하여 데이터베이스 구현을 추상화합니다. 모든 데이터베이스의 구현은 이 인터페이스를 사용 할 수 있어야 합니다. 즉 데이터베이스의 구현 세부 정보가 없어야 됩니다.

company/domain/company.go

type Company struct {
	Name		string
	Address		string
	JobOpening	bool
}

별도의 설명이 필요없는 Company 구조체의 정의이다.

company/domain/repository.go

type Repository interface {
	AddCompany(ctx context.Context, co *Company) error
	GetCompany(ctx context.Context) (*Company, error)
	UpdateCompany(ctx context.Context, co *Company) error
	DeleteCompany(ctx context.Context, co *Company) error
}

위와 같이 데이터베이스에 관련된 것을 인터페이스로 추상화하여 데이터베이스와 관련 없이 사용 할 수 있도록 만듭니다.
context.Context를 사용했는데 자세한 설명은 공식 사이트를 참고하세요!

0개의 댓글