Skip to content

Commit f6c8382

Browse files
committed
reservation에서 예약자 복수 지정 으로 개선 및 DB 컬럼 추가 및 수정
1 parent cb1246e commit f6c8382

12 files changed

Lines changed: 152 additions & 149 deletions

app/grpc/reservation/reservation_pb.rb

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/grpc/room/room_pb.rb

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/interceptors/auth_interceptor.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ def request_response(request:, call:, method:)
1818
user_code = call.metadata['x-user-code']
1919
user_role = (call.metadata['x-user-role'] || "student").to_s.downcase
2020

21+
roles = user_role.split(',').map { |r| r.strip }
22+
2123
if user_code.nil? || user_code.empty?
2224
raise UNAUTHENTICATED
2325
end

app/models/reservation.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ class Reservation < ApplicationRecord
1313
# Validations
1414
# ========================================
1515
validates :code, presence: true, uniqueness: true
16-
validates :group_id, presence: true
1716
validates :purpose, presence: true
1817
validates :priority, presence: true
1918
validates :start_time, presence: true
2019
validates :end_time, presence: true
2120

22-
validate :start_time_before_end_time
21+
validate :start_time_before_end_time
22+
23+
# group_id는 더 이상 사용하지 않으므로 validation 제거
24+
# user_id도 제거됨 → user_codes(JSON)로 대체됨
2325

2426
# ========================================
2527
# Default scope (Soft delete)
@@ -47,6 +49,10 @@ def self.with_deleted
4749
# ========================================
4850
def set_defaults
4951
self.priority ||= 0
52+
53+
# 매우 중요: MySQL JSON 컬럼은 기본값을 DB에서는 줄 수 없기 때문에
54+
# Rails에서 기본값을 강제로 주어야 함
55+
self.user_codes ||= []
5056
end
5157

5258
# ========================================
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class FixReservationsUserCodes < ActiveRecord::Migration[7.0]
2+
def change
3+
# 1) 기존 단일 user_id 삭제
4+
if column_exists?(:reservations, :user_id)
5+
remove_column :reservations, :user_id, :bigint
6+
end
7+
8+
# 2) JSON 배열 user_codes 추가
9+
unless column_exists?(:reservations, :user_codes)
10+
add_column :reservations, :user_codes, :json, default: []
11+
end
12+
end
13+
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class AddUserCodesToReservations < ActiveRecord::Migration[7.0]
2+
def change
3+
# 기존 user_id 제거
4+
if column_exists?(:reservations, :user_id)
5+
remove_column :reservations, :user_id, :bigint
6+
end
7+
8+
# JSON 컬럼은 default 값을 설정하면 안 됨 (MySQL 규칙)
9+
unless column_exists?(:reservations, :user_codes)
10+
add_column :reservations, :user_codes, :json
11+
end
12+
end
13+
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddStatusToReservations < ActiveRecord::Migration[7.1]
2+
def change
3+
add_column :reservations, :status, :integer, default: 1 # 기본값: CONFIRMED
4+
end
5+
end

db/schema.rb

Lines changed: 13 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)