MCPcopy Index your code
hub / github.com/coder/coder / convertAuditLog

Method convertAuditLog

coderd/audit.go:205–293  ·  view source on GitHub ↗
(ctx context.Context, dblog database.GetAuditLogsOffsetRow)

Source from the content-addressed store, hash-verified

203}
204
205func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogsOffsetRow) codersdk.AuditLog {
206 ip, _ := netip.AddrFromSlice(dblog.AuditLog.Ip.IPNet.IP)
207
208 diff := codersdk.AuditDiff{}
209 _ = json.Unmarshal(dblog.AuditLog.Diff, &diff)
210
211 var user *codersdk.User
212 if dblog.UserUsername.Valid {
213 // Leaving the organization IDs blank for now; not sure they are useful for
214 // the audit query anyway?
215 sdkUser := db2sdk.User(database.User{
216 ID: dblog.AuditLog.UserID,
217 Email: dblog.UserEmail.String,
218 Username: dblog.UserUsername.String,
219 CreatedAt: dblog.UserCreatedAt.Time,
220 UpdatedAt: dblog.UserUpdatedAt.Time,
221 Status: dblog.UserStatus.UserStatus,
222 RBACRoles: dblog.UserRoles,
223 LoginType: dblog.UserLoginType.LoginType,
224 AvatarURL: dblog.UserAvatarUrl.String,
225 Deleted: dblog.UserDeleted.Bool,
226 LastSeenAt: dblog.UserLastSeenAt.Time,
227 QuietHoursSchedule: dblog.UserQuietHoursSchedule.String,
228 Name: dblog.UserName.String,
229 }, []uuid.UUID{})
230 user = &sdkUser
231 }
232
233 var (
234 additionalFieldsBytes = []byte(dblog.AuditLog.AdditionalFields)
235 additionalFields audit.AdditionalFields
236 err = json.Unmarshal(additionalFieldsBytes, &additionalFields)
237 )
238 if err != nil {
239 api.Logger.Error(ctx, "unmarshal additional fields", slog.Error(err))
240 resourceInfo := audit.AdditionalFields{
241 WorkspaceName: "unknown",
242 BuildNumber: "unknown",
243 BuildReason: "unknown",
244 WorkspaceOwner: "unknown",
245 }
246
247 dblog.AuditLog.AdditionalFields, err = json.Marshal(resourceInfo)
248 api.Logger.Error(ctx, "marshal additional fields", slog.Error(err))
249 }
250
251 var (
252 isDeleted = api.auditLogIsResourceDeleted(ctx, dblog)
253 resourceLink string
254 )
255 if isDeleted {
256 resourceLink = ""
257 } else {
258 resourceLink = api.auditLogResourceLink(ctx, dblog, additionalFields)
259 }
260
261 alog := codersdk.AuditLog{
262 ID: dblog.AuditLog.ID,

Callers 1

convertAuditLogsMethod · 0.95

Calls 9

auditLogResourceLinkMethod · 0.95
UserFunction · 0.92
ResourceTypeTypeAlias · 0.92
AuditActionTypeAlias · 0.92
auditLogDescriptionFunction · 0.85
UnmarshalMethod · 0.45
ErrorMethod · 0.45
MarshalMethod · 0.45

Tested by

no test coverage detected