Files

59 lines
1.6 KiB
Swift

//
// EventLogger.swift
// Privado
//
// Created by Juraldinio on 1/21/20.
// Copyright © 2020 Privado LLC. All rights reserved.
//
import Foundation
final class EventLogger: EventCometLoggerProtocol {
var type: CometLoggerType = .plain
var isActive = true
func event(name: String, attributes: [String: Any], secured: [String: Any]?) {
guard !name.contains(PrivadoConstants.Event.Statistic.prefix) else { return }
let payloadDict = attributes.reduce(secured ?? [:]) { acc, elem in
var acc = acc
acc[elem.0] = elem.1
return acc
}
let payload = payloadDict.compactMap { (key, value) -> String? in
guard let dic = value as? [String: Any] else {
return "\(key) = \(value)"
}
return "[" + dic.compactMap { (ikey, ivalue) -> String? in
return "\(ikey) = \(ivalue)"
}.joined(separator: "; ") + "]"
}.joined(separator: "; ")
#if !PRODUCTION
self.save(tag: "Event", label: name, payload: payload)
#endif
}
private func save(tag: String, label: String, payload: String) {
guard let coordinator = DatabaseAnswer.commonDB else { return }
let context = coordinator.createContext()
let record: LogRecord = context.create()
record.tag = "Event"
record.label = label
record.payload = payload
record.date = Date()
context.save()
coordinator.save()
}
}