77
88import Foundation
99
10- public class Account : Decodable {
11-
12- private static let path = " /accounts "
10+ public class AccountError : AmatinoObjectError { }
11+
12+ public class Account : AmatinoObject {
13+
14+ internal static let path = " /accounts "
15+ internal static let errorType : AmatinoObjectError . Type = AccountError . self
16+
1317 private static let urlKey = " account_id "
1418
1519 public let id : Int
@@ -37,6 +41,35 @@ public class Account: Decodable {
3741 description: description,
3842 globalUnit: globalUnit
3943 )
44+ let _ = try Account . create ( session, entity, arguments, callback)
45+ return
46+ }
47+
48+ public static func create(
49+ session: Session ,
50+ entity: Entity ,
51+ name: String ,
52+ description: String ,
53+ globalUnit: GlobalUnit ,
54+ parent: Account ,
55+ callback: @escaping ( Error ? , Account ? ) -> Void
56+ ) throws {
57+ let arguments = try AccountCreateArguments (
58+ name: name,
59+ description: description,
60+ globalUnit: globalUnit,
61+ parent: parent
62+ )
63+ let _ = try Account . create ( session, entity, arguments, callback)
64+ return
65+ }
66+
67+ private static func create(
68+ _ session: Session ,
69+ _ entity: Entity ,
70+ _ arguments: AccountCreateArguments ,
71+ _ callback: @escaping ( Error ? , Account ? ) -> Void
72+ ) throws {
4073 let requestData = try RequestData ( data: arguments)
4174 let urlParameters = UrlParameters ( singleEntity: entity)
4275 let _ = try AmatinoRequest (
@@ -46,9 +79,8 @@ public class Account: Decodable {
4679 urlParameters: urlParameters,
4780 method: . POST,
4881 callback: { ( error, data) in
49- let _ = loadResponse ( error, data, callback)
82+ let _ = loadResponse ( error, data, callback, Account . self )
5083 } )
51- return
5284 }
5385
5486 public static func create(
@@ -66,7 +98,7 @@ public class Account: Decodable {
6698 urlParameters: urlParameters,
6799 method: . POST,
68100 callback: { ( error, data) in
69- let _ = loadArrayResponse ( error, data, callback)
101+ let _ = loadArrayResponse ( error, data, callback, Account . self )
70102 } )
71103 }
72104
@@ -91,7 +123,7 @@ public class Account: Decodable {
91123 urlParameters: urlParameters,
92124 method: . GET,
93125 callback: { ( error, data) in
94- let _ = loadResponse ( error, data, callback)
126+ let _ = loadResponse ( error, data, callback, Account . self )
95127 } )
96128 }
97129
@@ -113,53 +145,10 @@ public class Account: Decodable {
113145 urlParameters: urlParameters,
114146 method: . GET,
115147 callback: { ( error, data) in
116- let _ = loadArrayResponse ( error, data, callback)
148+ let _ = loadArrayResponse ( error, data, callback, Account . self )
117149 } )
118150 }
119-
120- private static func loadResponse(
121- _ error: Error ? ,
122- _ data: Data ? ,
123- _ callback: ( Error ? , Account ? ) -> Void
124- ) {
125- guard error == nil else { callback ( error, nil ) ; return }
126- let decoder = JSONDecoder ( )
127- let accounts : Account
128- do {
129- accounts = try decoder. decode (
130- [ Account ] . self,
131- from: data!
132- ) [ 0 ]
133- callback ( nil , accounts)
134- return
135- } catch {
136- callback ( error, nil )
137- return
138- }
139- }
140-
141- private static func loadArrayResponse(
142- _ error: Error ? ,
143- _ data: Data ? ,
144- _ callback: ( Error ? , [ Account ] ? ) -> Void
145- ) {
146- guard error == nil else { callback ( error, nil ) ; return }
147- let decoder = JSONDecoder ( )
148- let accounts : [ Account ]
149- do {
150- accounts = try decoder. decode (
151- [ Account ] . self,
152- from: data!
153- )
154- callback ( nil , accounts)
155- return
156- } catch {
157- callback ( error, nil )
158- return
159- }
160- }
161151
162-
163152 public required init ( from decoder: Decoder ) throws {
164153 let container = try decoder. container ( keyedBy: CodingKeys . self)
165154 id = try container. decode ( Int . self, forKey: . id)
0 commit comments