Skip to content

Commit 3b80507

Browse files
committed
feat(i18n): add audit fields to Translation table
Add created_by and updated_by fields to Translation model for proper audit trail consistency with other core entities (User, Contest, etc). - Add created_by and updated_by fields to Translation model - Add relations to User model (creator, updater) - Add indexes on created_by and updated_by - Create migration: 20260114163745_add_translation_audit_fields Resolves Issue #11: Translation table missing created_by and updated_by
1 parent 33bbba8 commit 3b80507

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

backend/.eslintcache

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
-- AlterTable
2+
ALTER TABLE `translations` ADD COLUMN `created_by` VARCHAR(40) NULL,
3+
ADD COLUMN `updated_by` VARCHAR(40) NULL;
4+
5+
-- CreateIndex
6+
CREATE INDEX `translations_created_by_idx` ON `translations`(`created_by`);
7+
8+
-- CreateIndex
9+
CREATE INDEX `translations_updated_by_idx` ON `translations`(`updated_by`);
10+
11+
-- AddForeignKey
12+
ALTER TABLE `translations` ADD CONSTRAINT `translations_created_by_fkey` FOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
13+
14+
-- AddForeignKey
15+
ALTER TABLE `translations` ADD CONSTRAINT `translations_updated_by_fkey` FOREIGN KEY (`updated_by`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;

backend/prisma/schema.prisma

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ model User {
4949
performedAudits AuditLog[] @relation("AuditLogPerformer")
5050
systemAnnouncements SystemAnnouncement[]
5151
systemAnnouncementReads SystemAnnouncementRead[]
52+
createdTranslations Translation[] @relation("TranslationCreator")
53+
updatedTranslations Translation[] @relation("TranslationUpdater")
5254
5355
@@index([role])
5456
@@index([is_active, is_banned])
@@ -966,12 +968,19 @@ model Translation {
966968
field_name String @db.VarChar(50) // title, summary, description, etc.
967969
locale String @db.VarChar(10) // en-US, zh-CN
968970
content String @db.Text
971+
created_by String? @db.VarChar(40)
972+
updated_by String? @db.VarChar(40)
969973
created_at DateTime @default(now())
970974
updated_at DateTime @updatedAt
971975
976+
creator User? @relation("TranslationCreator", fields: [created_by], references: [id])
977+
updater User? @relation("TranslationUpdater", fields: [updated_by], references: [id])
978+
972979
@@unique([entity_type, entity_id, field_name, locale])
973980
@@index([entity_type, entity_id, locale])
974981
@@index([locale])
982+
@@index([created_by])
983+
@@index([updated_by])
975984
@@map("translations")
976985
}
977986

0 commit comments

Comments
 (0)