An amazing project that generates micro reports from tournament results
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pa-tournament-stats/TournamentStats/core/Realm+Extensions.swift

43 lines
1.1 KiB

//
// Realm+Extensions.swift
// TournamentStats
//
// Created by Laurent Morvillier on 02/06/2019.
// Copyright © 2019 Stax River. All rights reserved.
//
import Foundation
import Realm
import RealmSwift
protocol Named {
var name: String { get set }
}
extension Realm {
func getOrCreate<T>(name: String) -> T where T : Object, T : Named {
let items = self.objects(T.self).filter("name = %@", name)
if let item = items.first {
return item
}
var new = self.create(T.self)
new.name = name
return new
}
func getOrCreatePlayer(name: String, city: String, state: String, country: String, notable: Bool = false) -> Player {
let items = self.objects(Player.self).filter("name = %@ && state = %@ && country = %@", name, state, country)
if let item = items.first {
return item
}
let new = self.create(Player.self)
new.name = name
new.city = city
new.country = country
new.state = state
new.notable = notable
return new
}
}