728x90
반응형

가계부만들기 8

[가계부 만들기] 지출입 기록 - 설계

제일 많이 사용하고 제일 중요한 자료가 되는 것이 바로 지출입 자료일 것이다. 가계부에서 사실 이게 전부라고 할 수 있다. 어쨌든 근본적으로 이 기록을 남기기 위한 기본 설정을 지금까지 해왔다고 할 수 있다. 가계부를 만들기로 한 이유는 바로 형태가 마음에 딱 맞는 것이 없었기 때문이다. 예를 들어서 대형마트에 가서 장을 본다고 했을 때, 이를 세부적으로 분류해서 기록할 수가 없다. 마트에서 장을 보면 장남감을 살 수 있고, 식재료를 살 수 있고, 또는 생활용품을 구매할 수도 있는데 이를 세부적으로 기록할 수 있는 툴을 제공하는 프로그램이 없다. 그래서 일단은 엑셀로 정리해서 사용했는데 아무래도 파일로 기록하다보니 부족함을 느끼게 된다. 그래서 일단 프로그램을 만들어서 사용해보기로 한다. 기록 형태 우선..

[가계부 만들기] Category 생성/수정/삭제

이전 포스팅에서 카테고리에 관련된 기능을 구현하기 위해 설계한 구조와 리스트를 가져오는 내용을 정리하였다. 이번 포스팅에서는 생성/수정/삭제와 관련된 기능을 기록하려고 한다. 사실 생성/수정/삭제 기능은 이전에 회원 정보를 관리할 때 사용한 기능과 거의 동일하다. 테이블이 바뀌니 모델이 달라지고 패스워드가 없으니 암호화되는 과정이 생략되는 정도로 생각하면 된다. 카테고리 생성 먼저 생성하는 코드를 먼저 구현한다. 이전과 동일하게 로직은 services 아래 category_service.py에서 구현하고 라우팅만 연결하도록 할 것이다. 로직을 먼저 구현한다. 코드는 아래와 같다. # 카테고리 생성 async def create_category( db: AsyncSession, member_no: int,..

[가계부 만들기] 카테고리 설정 - 구조/리스트조회

가계부에서 수입/지출 항목을 입력하는 기능을 만들기 전에 먼저 카테고리 설정에 관련된 기능을 구현하고자 한다. 모든 수입/지출 내역은 카테고리로 정리할 수 있을 것이다. 물론 카테고리 항목이 비어있을 수도 있겠지만 카테고리를 정리해두면 추후에 통계 자료를 만들 때 활용할 수 있는 여지가 많다. 다년간 개발을 하다보니 원 데이터가 상세하면 이를 가공해서 만들 수 있는 통계도 훨씬 다양하게 만들 수 있다. 이전 내용에서 회원 가입시 기본 카테고리를 자동으로 생성해주는 코드를 붙여두었다. 기본적인 카테고리 정보가 있으니 먼저 카테고리 리스틑 가져오는 것부터 시작해서 카테고리를 새로 생성하고, 수정하고, 삭제하는 기능을 구현하도록 할 것이다. 카테고리는 하나의 카테고리 정보가 때어내어서 관리하는 일보다는 리스트..

[가계부 만들기] Category Table 구조 변경

카테고리 관련 기능을 구현하려고 보니 카테고리 관련 테이블 구조가 잘못된 것을 알게 되었다. 최초에는 시스템에서 정의한 카테고리만 보이도록 하고 시스템에서 정의한 카테고리는 변경을 할 수 없도록 하려고 했다. 그러나 출력되는 순서를 변경하고 싶거나 시스템 카테고리에 서브로 카테고리를 더 추가하고 싶을 수도 있을 것이라고 판단된다. 그럼 회원이 가입할 때 시스템 정의 카테고리를 회원별로 정의해 주고 회원별로 정의된 카테고리는 각 회원이 자신의 필요에 맞춰 수정할 수 있도록 해야 할 것이다. 그리고 최초 정의한 테이블에는 지출에 대한 카테고리만 생각하고 정의했는데 수입에 대해서도 카테고리를 정의하고 싶을 수 있으므로 카테고리 테이블에 수입/지출에 대한 구분 값을 넣을 것이다. 마지막으로 순서를 변경할 수 있..

[가계부 만들기] Backend - 회원 관리 기능 #4

이제 사용자가 전달한 값을 통해서 실제로 Database에 연동하는 코드를 넣을 것이다. 서비스 디렉토리 생성 먼저 비즈니스 로직을 담당하는 파일들을 모아둘 디렉토리를 생성하고 __init.py__ 파일을 추가해둔다. 그리고 회원 관련 로직을 작성할 members_service.py 파일을 생성한다. 이제 구조를 만들었으니 이제 내용을 작성해보자. 외부 파일 참조 및 변수 선언 from sqlalchemy import select from sqlalchemy.orm import Session from sqlalchemy.sql import func from datetime import timedelta from ..database import models, schemas from ..libraries i..

[가계부 만들기] Backend - 회원 관리 기능 #3

기능 개발을 해가다보니 앞에 개발했던 부분에서 뭔가 부족한 부분을 발견하고 추가하게 된다. 앞선 회원 관리 기능 포스팅에서 schema에 대한 내용을 정리했었는데 회원 정보에 대한 관리 기능을 구현하다가 보니 처음에는 생각하지 못했던 부분을 추가하게 되었다. Schema 현재 버전의 schema.py 파일은 아래 내용과 같다. from pydantic import BaseModel, Field from typing import Optional # 회원 가입에 대한 Request Schema class MemberCreate(BaseModel): member_id: str = Field(title="사용자 아이디", max_length=30) member_pw: str = Field(title="사용자 패..

[가계부 만들기] Backend - 회원 관리 기능#1

Concept 프로그램을 만들면서 가장 기본이 되는 기능이 바로 회원 정보를 관리하는 것이다. 생성되는 모든 정보는 회원 정보에 종속되게 되므로 회원의 정보를 잘 관리하는 것이 매우 중요하다. 이 프로젝트에서는 회원의 많은 정보를 사용하지 않는다. 이전에 공유했던 회원 정보 테이블을 다시 보자. CREATE TABLE `tb_members` ( `member_no` smallint unsigned NOT NULL AUTO_INCREMENT COMMENT '멤버번호', `member_id` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '사용자 아이디', `member_pw` varchar(128) COLLATE utf8mb4_general_ci NOT..

[가계부 만들기] Backend - Database #1

이제 본격적인 개발을 진행해볼 것이다. 본격적인 개발을 시작하면서 데이터를 실제로 저장할 데이터베이스를 연결해두어야 한다. 여기서는 app/databases 디렉토리를 생성하고 거기서 관련 코드를 넣을 계획이다. 개발은 vscode IDE를 사용하여서 진행할 것이다. uvicorn으로 프로그램을 실행하면 app 디렉토리 하단에 __pycache__라는 디렉토리가 생성된다. 이 디렉토리가 계속 생성되고 갱신되는데 개발에서 사용하는 디렉토리가 아니다보니 제법 신경이 쓰인다. 그리서 여기서는 해당 디렉토리를 보이지 않도록 처리한다. backend 디렉토리에서 .vscode 라는 디렉토리는 생성하고 settings.json 파일을 생성한다. 이렇게 하고 나면 디렉토리 구조가 다음과 같아 진다. settings...

728x90
반응형