From 8e9eb0ef1963c3a0392c1c40f6a500f9aac90d4a Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 7 Dec 2025 11:42:55 -0800 Subject: [PATCH] fix(identity): add device_info columns to user_devices migration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add device_info JSONB column for storing complete device info - Add platform, device_model, os_version, app_version columns - Add screen_width, screen_height, locale, timezone columns - Add idx_platform index 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .claude/settings.local.json | 4 +++- .../migrations/20241204000000_init/migration.sql | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 09c7bc5b..1e76f823 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -39,7 +39,9 @@ "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nrefactor(identity): remove province/city/address fields\n\n- Remove provinceCode, cityCode, address from UserAccount aggregate\n- Remove ProvinceCode, CityCode value objects\n- Remove UserLocationUpdatedEvent domain event\n- Update Prisma schema to drop province/city/address columns\n- Update repository, mapper, handlers, services and DTOs\n- Clean up tests and factory files\n\nProvince/city should belong to adoption-service as transaction data,\nnot identity-service user data.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \nEOF\n)\")", "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" push)", "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): update migration to TEXT avatar and remove province/city/address\n\n- Change avatar_url column from VARCHAR(500) to TEXT\n- Remove province_code, city_code, address columns from user_accounts\n- Remove idx_province_city index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \nEOF\n)\")", - "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): remove address from updateProfile and fix deviceInfo type\n\n- Remove dto.address parameter from updateProfile controller\n- Remove address property from updateProfile service\n- Fix deviceInfo JSON serialization for Prisma InputJsonValue type\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \nEOF\n)\")" + "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): remove address from updateProfile and fix deviceInfo type\n\n- Remove dto.address parameter from updateProfile controller\n- Remove address property from updateProfile service\n- Fix deviceInfo JSON serialization for Prisma InputJsonValue type\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \nEOF\n)\")", + "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" checkout -- backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql)", + "Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): add device_info columns to user_devices migration\n\n- Add device_info JSONB column for storing complete device info\n- Add platform, device_model, os_version, app_version columns\n- Add screen_width, screen_height, locale, timezone columns\n- Add idx_platform index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \nEOF\n)\")" ], "deny": [], "ask": [] diff --git a/backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql b/backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql index dd59b5eb..75cd9909 100644 --- a/backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql +++ b/backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql @@ -27,6 +27,15 @@ CREATE TABLE "user_devices" ( "user_id" BIGINT NOT NULL, "device_id" VARCHAR(100) NOT NULL, "device_name" VARCHAR(100), + "device_info" JSONB, + "platform" VARCHAR(20), + "device_model" VARCHAR(100), + "os_version" VARCHAR(50), + "app_version" VARCHAR(20), + "screen_width" INTEGER, + "screen_height" INTEGER, + "locale" VARCHAR(10), + "timezone" VARCHAR(50), "added_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "last_active_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -203,6 +212,9 @@ CREATE INDEX "idx_user" ON "user_devices"("user_id"); -- CreateIndex CREATE INDEX "idx_last_active" ON "user_devices"("last_active_at"); +-- CreateIndex +CREATE INDEX "idx_platform" ON "user_devices"("platform"); + -- CreateIndex CREATE UNIQUE INDEX "uk_user_device" ON "user_devices"("user_id", "device_id");