Explorar o código

Datastore example: enhanced insert/query/delete operations.

Tim Burks %!s(int64=8) %!d(string=hai) anos
pai
achega
46601f0953
Modificáronse 1 ficheiros con 55 adicións e 17 borrados
  1. 55 17
      Examples/Datastore/PackageManager/Sources/main.swift

+ 55 - 17
Examples/Datastore/PackageManager/Sources/main.swift

@@ -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()