// // <%= association.class_name %>.swift // MetaModel // // Created by MetaModel. // Copyright © 2016 metamodel. All rights reserved. //

import Foundation

extension <%= association.class_name %> {

@discardableResult static func create(<%= association.major_model_id %>: Int, <%= association.secondary_model_id %>: Int) {
    executeSQL("INSERT INTO \(<%= association.class_name %>.tableName) (<%= association.major_model_id.underscore %>, <%= association.secondary_model_id.underscore %>) VALUES (\(<%= association.major_model_id %>), \(<%= association.secondary_model_id %>))")
}

}

public extension <%= association.major_model.name %> {

var <%= association.name %>: <%= association.secondary_model.name %>? {
    get {
        guard let id = <%= association.class_name %>.findBy(<%= association.major_model.foreign_id %>: privateId).first?.<%= association.secondary_model.foreign_id %> else { return nil }
        return <%= association.secondary_model.name %>.find(id)
    }
    set {
        guard let newValue = newValue else { return }
        <%= association.class_name %>.findBy(<%= association.major_model_id %>: privateId).forEach { $0.delete }
        <%= association.class_name %>.create(<%= association.major_model_id %>: newValue.privateId, <%= association.secondary_model_id %>: privateId)
    }
}

}