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.
43 lines
1.1 KiB
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) -> 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 = NotablePlayers.all.contains(name)
|
|
return new
|
|
}
|
|
|
|
}
|
|
|