From f0f728c28625e9c1d8628a464db7d5e26869fe3a Mon Sep 17 00:00:00 2001 From: Tanner Nelson Date: Thu, 16 Feb 2017 18:50:24 +0100 Subject: [PATCH 1/3] primary key bug --- Sources/Fluent/SQL/GeneralSQLSerializer.swift | 6 +++++- Sources/Fluent/Schema/Schema+Creator.swift | 3 ++- Sources/Fluent/Schema/Schema+Field.swift | 21 ++++++++++++------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Sources/Fluent/SQL/GeneralSQLSerializer.swift b/Sources/Fluent/SQL/GeneralSQLSerializer.swift index 30d28ce7..2147fc73 100644 --- a/Sources/Fluent/SQL/GeneralSQLSerializer.swift +++ b/Sources/Fluent/SQL/GeneralSQLSerializer.swift @@ -372,6 +372,10 @@ open class GeneralSQLSerializer: SQLSerializer { clause += sql(column.name) clause += sql(column.type) + + if column.primary { + clause += "PRIMARY KEY" + } if !column.optional { clause += "NOT NULL" @@ -414,7 +418,7 @@ open class GeneralSQLSerializer: SQLSerializer { case .custom(let dataType): typeString = dataType } - return typeString + " PRIMARY KEY" + return typeString case .int: return "INTEGER" case .string(_): diff --git a/Sources/Fluent/Schema/Schema+Creator.swift b/Sources/Fluent/Schema/Schema+Creator.swift index bd39cb2c..11c5f103 100644 --- a/Sources/Fluent/Schema/Schema+Creator.swift +++ b/Sources/Fluent/Schema/Schema+Creator.swift @@ -13,7 +13,8 @@ extension Schema { public func id(for entityType: E.Type) { fields += Field( name: E.idKey, - type: .id(type: E.idType) + type: .id(type: E.idType), + primary: true ) } diff --git a/Sources/Fluent/Schema/Schema+Field.swift b/Sources/Fluent/Schema/Schema+Field.swift index c8956d82..c6f7694a 100644 --- a/Sources/Fluent/Schema/Schema+Field.swift +++ b/Sources/Fluent/Schema/Schema+Field.swift @@ -2,11 +2,12 @@ extension Schema { /// Various types of fields /// that can be used in a Schema. public struct Field { - public var name: String - public var type: DataType - public var optional: Bool - public var unique: Bool - public var `default`: Node? + public let name: String + public let type: DataType + public let optional: Bool + public let unique: Bool + public let `default`: Node? + public let primary: Bool public enum DataType { case id(type: IdentifierType) @@ -23,13 +24,15 @@ extension Schema { type: DataType, optional: Bool = false, unique: Bool = false, - default: Node? = nil + default: Node? = nil, + primary: Bool = false ) { self.name = name self.type = type self.optional = optional self.unique = unique self.default = `default` + self.primary = primary } public init( @@ -37,7 +40,8 @@ extension Schema { type: DataType, optional: Bool = false, unique: Bool = false, - default: NodeRepresentable? = nil + default: NodeRepresentable? = nil, + primary: Bool = false ) { let node: Node? @@ -52,7 +56,8 @@ extension Schema { type: type, optional: optional, unique: unique, - default: node + default: node, + primary: primary ) } } From dc8ab1f0ea9fe9c2b7353b2117e6a6ff232a5df2 Mon Sep 17 00:00:00 2001 From: Tanner Nelson Date: Thu, 16 Feb 2017 19:29:39 +0100 Subject: [PATCH 2/3] int default --- Sources/Fluent/Entity/Entity.swift | 2 +- Sources/Fluent/SQL/GeneralSQLSerializer.swift | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/Fluent/Entity/Entity.swift b/Sources/Fluent/Entity/Entity.swift index 465e554d..cb23e036 100644 --- a/Sources/Fluent/Entity/Entity.swift +++ b/Sources/Fluent/Entity/Entity.swift @@ -122,7 +122,7 @@ extension Entity { /// See Entity.idType public static var idType: IdentifierType { - return database?.driver.idType ?? .uuid + return database?.driver.idType ?? .int } /// See Entity.idKey diff --git a/Sources/Fluent/SQL/GeneralSQLSerializer.swift b/Sources/Fluent/SQL/GeneralSQLSerializer.swift index 2147fc73..8c4ceb58 100644 --- a/Sources/Fluent/SQL/GeneralSQLSerializer.swift +++ b/Sources/Fluent/SQL/GeneralSQLSerializer.swift @@ -371,11 +371,7 @@ open class GeneralSQLSerializer: SQLSerializer { var clause: [String] = [] clause += sql(column.name) - clause += sql(column.type) - - if column.primary { - clause += "PRIMARY KEY" - } + clause += sql(column.type, primary: column.primary) if !column.optional { clause += "NOT NULL" @@ -406,7 +402,7 @@ open class GeneralSQLSerializer: SQLSerializer { } - open func sql(_ type: Schema.Field.DataType) -> String { + open func sql(_ type: Schema.Field.DataType, primary: Bool) -> String { switch type { case .id(let type): let typeString: String @@ -418,7 +414,11 @@ open class GeneralSQLSerializer: SQLSerializer { case .custom(let dataType): typeString = dataType } - return typeString + if primary { + return typeString + " PRIMARY KEY" + } else { + return typeString + } case .int: return "INTEGER" case .string(_): From 143ca06a9953b7e6cbfbee1affd8654f018b90f6 Mon Sep 17 00:00:00 2001 From: Tanner Nelson Date: Thu, 16 Feb 2017 19:35:34 +0100 Subject: [PATCH 3/3] add key --- Sources/Fluent/SQL/GeneralSQLSerializer.swift | 6 +++--- Sources/Fluent/Schema/Schema+Creator.swift | 2 +- Sources/Fluent/Schema/Schema+Field.swift | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Sources/Fluent/SQL/GeneralSQLSerializer.swift b/Sources/Fluent/SQL/GeneralSQLSerializer.swift index 8c4ceb58..31b3900b 100644 --- a/Sources/Fluent/SQL/GeneralSQLSerializer.swift +++ b/Sources/Fluent/SQL/GeneralSQLSerializer.swift @@ -371,7 +371,7 @@ open class GeneralSQLSerializer: SQLSerializer { var clause: [String] = [] clause += sql(column.name) - clause += sql(column.type, primary: column.primary) + clause += sql(column.type, primaryKey: column.primaryKey) if !column.optional { clause += "NOT NULL" @@ -402,7 +402,7 @@ open class GeneralSQLSerializer: SQLSerializer { } - open func sql(_ type: Schema.Field.DataType, primary: Bool) -> String { + open func sql(_ type: Schema.Field.DataType, primaryKey: Bool) -> String { switch type { case .id(let type): let typeString: String @@ -414,7 +414,7 @@ open class GeneralSQLSerializer: SQLSerializer { case .custom(let dataType): typeString = dataType } - if primary { + if primaryKey { return typeString + " PRIMARY KEY" } else { return typeString diff --git a/Sources/Fluent/Schema/Schema+Creator.swift b/Sources/Fluent/Schema/Schema+Creator.swift index 11c5f103..230d7bd3 100644 --- a/Sources/Fluent/Schema/Schema+Creator.swift +++ b/Sources/Fluent/Schema/Schema+Creator.swift @@ -14,7 +14,7 @@ extension Schema { fields += Field( name: E.idKey, type: .id(type: E.idType), - primary: true + primaryKey: true ) } diff --git a/Sources/Fluent/Schema/Schema+Field.swift b/Sources/Fluent/Schema/Schema+Field.swift index c6f7694a..1ef2ace0 100644 --- a/Sources/Fluent/Schema/Schema+Field.swift +++ b/Sources/Fluent/Schema/Schema+Field.swift @@ -7,7 +7,7 @@ extension Schema { public let optional: Bool public let unique: Bool public let `default`: Node? - public let primary: Bool + public let primaryKey: Bool public enum DataType { case id(type: IdentifierType) @@ -25,14 +25,14 @@ extension Schema { optional: Bool = false, unique: Bool = false, default: Node? = nil, - primary: Bool = false + primaryKey: Bool = false ) { self.name = name self.type = type self.optional = optional self.unique = unique self.default = `default` - self.primary = primary + self.primaryKey = primaryKey } public init( @@ -41,7 +41,7 @@ extension Schema { optional: Bool = false, unique: Bool = false, default: NodeRepresentable? = nil, - primary: Bool = false + primaryKey: Bool = false ) { let node: Node? @@ -57,7 +57,7 @@ extension Schema { optional: optional, unique: unique, default: node, - primary: primary + primaryKey: primaryKey ) } }