package repository import ( "next-terminal/server/model" "context" "gorm.io/gorm" ) type sessionAuditRepository struct { baseRepository } var SessionAuditRepository = new(sessionAuditRepository) func (r *sessionAuditRepository) FindBySessionId(c context.Context, sessionId string) (model.SessionAudit, error) { var audit model.SessionAudit err := r.GetDB(c).Where("session_id = ?", sessionId).First(&audit).Error if err == gorm.ErrRecordNotFound { return audit, nil } return audit, err } func (r *sessionAuditRepository) Create(c context.Context, audit *model.SessionAudit) error { return r.GetDB(c).Create(audit).Error } func (r *sessionAuditRepository) Update(c context.Context, audit *model.SessionAudit) error { return r.GetDB(c).Save(audit).Error } func (r *sessionAuditRepository) Upsert(c context.Context, audit *model.SessionAudit) error { var existing model.SessionAudit err := r.GetDB(c).Where("session_id = ?", audit.SessionId).First(&existing).Error if err == gorm.ErrRecordNotFound { return r.Create(c, audit) } audit.ID = existing.ID return r.Update(c, audit) }