|
|
@@ -46,10 +46,27 @@ func runSelectQuery(service: Google_Datastore_V1_DatastoreService) throws {
|
|
|
var request = Google_Datastore_V1_RunQueryRequest()
|
|
|
request.projectID = projectID
|
|
|
var query = Google_Datastore_V1_GqlQuery()
|
|
|
- query.queryString = "select *"
|
|
|
+ query.queryString = "select * from Thing"
|
|
|
request.gqlQuery = query
|
|
|
let result = try service.runquery(request)
|
|
|
- print("\(result)")
|
|
|
+ var entities : [Thing] = []
|
|
|
+ for entityResult in result.batch.entityResults {
|
|
|
+ var properties : [String:Any] = [:]
|
|
|
+ for property in entityResult.entity.properties {
|
|
|
+ let key = property.key
|
|
|
+ switch property.value.valueType! {
|
|
|
+ case .integerValue(let v):
|
|
|
+ properties[key] = v
|
|
|
+ case .stringValue(let v):
|
|
|
+ properties[key] = v
|
|
|
+ default:
|
|
|
+ print("?")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let entity = try PropertiesDecoder.decode(Thing.self, from:properties)
|
|
|
+ entities.append(entity)
|
|
|
+ }
|
|
|
+ print("\(entities)")
|
|
|
}
|
|
|
|
|
|
func runInsert(service: Google_Datastore_V1_DatastoreService,
|
|
|
@@ -83,7 +100,30 @@ func runInsert(service: Google_Datastore_V1_DatastoreService,
|
|
|
request.mutations.append(mutation)
|
|
|
|
|
|
let result = try service.commit(request)
|
|
|
- print("\(result)")
|
|
|
+
|
|
|
+ for mutationResult in result.mutationResults {
|
|
|
+ print("\(mutationResult)")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func runDelete(service: Google_Datastore_V1_DatastoreService,
|
|
|
+ kind: String,
|
|
|
+ id: Int64) throws {
|
|
|
+ var request = Google_Datastore_V1_CommitRequest()
|
|
|
+ request.projectID = projectID
|
|
|
+ request.mode = .nonTransactional
|
|
|
+ var pathElement = Google_Datastore_V1_Key.PathElement()
|
|
|
+ pathElement.kind = kind
|
|
|
+ pathElement.id = id
|
|
|
+ var key = Google_Datastore_V1_Key()
|
|
|
+ key.path = [pathElement]
|
|
|
+ var mutation = Google_Datastore_V1_Mutation()
|
|
|
+ mutation.delete = key
|
|
|
+ request.mutations.append(mutation)
|
|
|
+ let result = try service.commit(request)
|
|
|
+ for mutationResult in result.mutationResults {
|
|
|
+ print("\(mutationResult)")
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func prepareService() throws -> Google_Datastore_V1_DatastoreService? {
|
|
|
@@ -114,25 +154,23 @@ func prepareService() throws -> Google_Datastore_V1_DatastoreService? {
|
|
|
return service
|
|
|
}
|
|
|
|
|
|
-func insert(number: Int) throws {
|
|
|
- if let service = try prepareService() {
|
|
|
- try runInsert(service:service, number:number)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func query() throws {
|
|
|
- if let service = try prepareService() {
|
|
|
- try runSelectQuery(service:service)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
Group {
|
|
|
$0.command("insert") { (number:Int) in
|
|
|
- try insert(number:number)
|
|
|
+ if let service = try prepareService() {
|
|
|
+ try runInsert(service:service, number:number)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $0.command("delete") { (id:Int) in
|
|
|
+ if let service = try prepareService() {
|
|
|
+ try runDelete(service:service, kind:"Thing", id:Int64(id))
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
$0.command("query") {
|
|
|
- try query()
|
|
|
+ if let service = try prepareService() {
|
|
|
+ try runSelectQuery(service:service)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}.run()
|