mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
import CoreData
|
|
import Foundation
|
|
import Models
|
|
|
|
struct InternalNewsletterEmail {
|
|
let emailId: String
|
|
let email: String
|
|
let confirmationCode: String?
|
|
|
|
func persist(context: NSManagedObjectContext) -> NewsletterEmail? {
|
|
let newsletterEmail = asManagedObject(inContext: context)
|
|
|
|
do {
|
|
try context.save()
|
|
DataService.logger.debug("NewsletterEmail saved succesfully")
|
|
return newsletterEmail
|
|
} catch {
|
|
context.rollback()
|
|
DataService.logger.debug("Failed to save NewsletterEmail: \(error.localizedDescription)")
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func asManagedObject(inContext context: NSManagedObjectContext) -> NewsletterEmail {
|
|
let newsletterEmail = NewsletterEmail(context: context)
|
|
newsletterEmail.emailId = emailId
|
|
newsletterEmail.email = email
|
|
newsletterEmail.confirmationCode = confirmationCode
|
|
return newsletterEmail
|
|
}
|
|
}
|
|
|
|
extension Sequence where Element == InternalNewsletterEmail {
|
|
func persist(context: NSManagedObjectContext) -> [NewsletterEmail]? {
|
|
let newsletterEmails = map { $0.asManagedObject(inContext: context) }
|
|
|
|
do {
|
|
try context.save()
|
|
DataService.logger.debug("NewsletterEmail saved succesfully")
|
|
return newsletterEmails
|
|
} catch {
|
|
context.rollback()
|
|
DataService.logger.debug("Failed to save NewsletterEmail: \(error.localizedDescription)")
|
|
return nil
|
|
}
|
|
}
|
|
}
|