package domain import ( "encoding/json" "time" ) type ActivityAction string const ( ActionCourseCreated ActivityAction = "COURSE_CREATED" ActionCourseUpdated ActivityAction = "COURSE_UPDATED" ActionCourseDeleted ActivityAction = "COURSE_DELETED" ActionSubCourseCreated ActivityAction = "SUB_COURSE_CREATED" ActionSubCourseUpdated ActivityAction = "SUB_COURSE_UPDATED" ActionSubCourseDeleted ActivityAction = "SUB_COURSE_DELETED" ActionVideoCreated ActivityAction = "VIDEO_CREATED" ActionVideoUploaded ActivityAction = "VIDEO_UPLOADED" ActionVideoPublished ActivityAction = "VIDEO_PUBLISHED" ActionVideoUpdated ActivityAction = "VIDEO_UPDATED" ActionVideoArchived ActivityAction = "VIDEO_ARCHIVED" ActionVideoDeleted ActivityAction = "VIDEO_DELETED" ActionUserCreated ActivityAction = "USER_CREATED" ActionUserUpdated ActivityAction = "USER_UPDATED" ActionUserDeleted ActivityAction = "USER_DELETED" ActionSettingsUpdated ActivityAction = "SETTINGS_UPDATED" ActionTeamMemberCreated ActivityAction = "TEAM_MEMBER_CREATED" ActionTeamMemberUpdated ActivityAction = "TEAM_MEMBER_UPDATED" ActionTeamMemberDeleted ActivityAction = "TEAM_MEMBER_DELETED" ActionCategoryCreated ActivityAction = "CATEGORY_CREATED" ActionCategoryUpdated ActivityAction = "CATEGORY_UPDATED" ActionCategoryDeleted ActivityAction = "CATEGORY_DELETED" ActionAdminCreated ActivityAction = "ADMIN_CREATED" ActionAdminUpdated ActivityAction = "ADMIN_UPDATED" ActionSubscriptionPlanCreated ActivityAction = "SUBSCRIPTION_PLAN_CREATED" ActionSubscriptionPlanUpdated ActivityAction = "SUBSCRIPTION_PLAN_UPDATED" ActionSubscriptionPlanDeleted ActivityAction = "SUBSCRIPTION_PLAN_DELETED" ActionQuestionCreated ActivityAction = "QUESTION_CREATED" ActionQuestionUpdated ActivityAction = "QUESTION_UPDATED" ActionQuestionDeleted ActivityAction = "QUESTION_DELETED" ActionQuestionSetCreated ActivityAction = "QUESTION_SET_CREATED" ActionQuestionSetUpdated ActivityAction = "QUESTION_SET_UPDATED" ActionQuestionSetDeleted ActivityAction = "QUESTION_SET_DELETED" ActionSubCourseDeactivated ActivityAction = "SUB_COURSE_DEACTIVATED" ActionIssueCreated ActivityAction = "ISSUE_CREATED" ActionIssueStatusUpdated ActivityAction = "ISSUE_STATUS_UPDATED" ActionIssueDeleted ActivityAction = "ISSUE_DELETED" ) type ResourceType string const ( ResourceCourse ResourceType = "COURSE" ResourceSubCourse ResourceType = "SUB_COURSE" ResourceVideo ResourceType = "VIDEO" ResourceUser ResourceType = "USER" ResourceSettings ResourceType = "SETTINGS" ResourceTeamMember ResourceType = "TEAM_MEMBER" ResourceCategory ResourceType = "CATEGORY" ResourceAdmin ResourceType = "ADMIN" ResourceSubscriptionPlan ResourceType = "SUBSCRIPTION_PLAN" ResourceQuestion ResourceType = "QUESTION" ResourceQuestionSet ResourceType = "QUESTION_SET" ResourceIssue ResourceType = "ISSUE" ) type ActivityLog struct { ID int64 ActorID *int64 ActorRole *string Action string ResourceType string ResourceID *int64 Message *string Metadata json.RawMessage IPAddress *string UserAgent *string CreatedAt time.Time } type ActivityLogFilter struct { ActorID *int64 Action *string ResourceType *string ResourceID *int64 After *time.Time Before *time.Time Limit int32 Offset int32 }