DatabaseAPITests.swift 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. //
  2. // Copyright 2021 Google LLC
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. //
  16. // MARK: This file is used to evaluate the experience of using the Firebase Database APIs in Swift.
  17. import Foundation
  18. import FirebaseCore
  19. import FirebaseDatabase
  20. final class DatabaseAPITests {
  21. func usage() {
  22. // MARK: - Database
  23. var url = "url"
  24. let path = "path"
  25. let host = "host"
  26. let port = 0
  27. let yes = true
  28. // Retrieve Database Instance
  29. var database = Database.database()
  30. database = Database.database(url: url)
  31. if let app = FirebaseApp.app() {
  32. database = Database.database(app: app, url: url)
  33. database = Database.database(app: app)
  34. }
  35. // Retrieve FirebaseApp
  36. let /* app */ _: FirebaseApp? = database.app
  37. // Retrieve DatabaseReference
  38. var databaseReference: DatabaseReference = database.reference()
  39. databaseReference = database.reference(withPath: path)
  40. databaseReference = database.reference(fromURL: url)
  41. // Instance methods
  42. database.purgeOutstandingWrites()
  43. database.goOffline()
  44. database.goOnline()
  45. database.useEmulator(withHost: host, port: port)
  46. // Instance members
  47. let /* isPersistenceEnabled */ _: Bool = database.isPersistenceEnabled
  48. let /* persistenceCacheSizeBytes */ _: UInt = database.persistenceCacheSizeBytes
  49. let /* callbackQueue */ _: DispatchQueue = database.callbackQueue
  50. // Class methods
  51. Database.setLoggingEnabled(yes)
  52. let /* sdkVersion */ _: String = Database.sdkVersion()
  53. // MARK: - DatabaseQuery
  54. let uint: UInt = 0
  55. let dataEventType: DataEventType = .value
  56. let child = "child"
  57. let childKey: String? = "key"
  58. let value: Any? = "value"
  59. let priority: Any? = "priority"
  60. var databaseHandle: DatabaseHandle = uint
  61. var databaseQuery = DatabaseQuery()
  62. // Observe for data
  63. // observe(_ eventType:with block:)
  64. databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot in
  65. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  66. }
  67. // observe(_ eventType:andPreviousSiblingKeyWith block:)
  68. databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot, optionalString in
  69. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  70. let /* optionalString */ _: String? = optionalString
  71. }
  72. // observe(_ eventType:with block:withCancel cancelBlock:)
  73. databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot in
  74. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  75. } withCancel: { error in
  76. let /* error */ _: Error = error
  77. }
  78. // observe(_ eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  79. databaseHandle = databaseQuery.observe(dataEventType) { dataSnapshot, optionalString in
  80. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  81. let /* optionalString */ _: String? = optionalString
  82. } withCancel: { error in
  83. let /* error */ _: Error = error
  84. }
  85. // Get data
  86. // getData(completion block:)
  87. databaseQuery.getData { optionalError, dataSnapshot in
  88. let /* optionalError */ _: Error? = optionalError
  89. let /* dataSnapshot */ _: DataSnapshot? = dataSnapshot
  90. }
  91. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  92. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  93. Task {
  94. do {
  95. let /* dataSnapshot */ _: DataSnapshot = try await DatabaseQuery().getData()
  96. } catch {
  97. // ...
  98. }
  99. }
  100. }
  101. // Observe Single Event
  102. // observeSingleEvent(of eventType:with block:)
  103. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
  104. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  105. }
  106. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
  107. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  108. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  109. let /* optionalString */ _: String? = optionalString
  110. }
  111. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  112. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  113. Task {
  114. // observeSingleEvent(of eventType:)
  115. let _: (DataSnapshot, String?) = await DatabaseQuery()
  116. .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
  117. }
  118. }
  119. // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
  120. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
  121. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  122. } withCancel: { error in
  123. let /* error */ _: Error = error
  124. }
  125. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  126. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  127. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  128. let /* optionalString */ _: String? = optionalString
  129. } withCancel: { error in
  130. let /* error */ _: Error = error
  131. }
  132. // Remove Observers
  133. databaseQuery.removeObserver(withHandle: databaseHandle)
  134. databaseQuery.removeAllObservers()
  135. // Keep Synced
  136. databaseQuery.keepSynced(yes)
  137. // Limited Views of Data
  138. databaseQuery = databaseQuery.queryLimited(toFirst: databaseHandle)
  139. databaseQuery = databaseQuery.queryLimited(toLast: databaseHandle)
  140. databaseQuery = databaseQuery.queryOrdered(byChild: child)
  141. databaseQuery = databaseQuery.queryOrderedByKey()
  142. databaseQuery = databaseQuery.queryOrderedByValue()
  143. databaseQuery = databaseQuery.queryOrderedByPriority()
  144. databaseQuery = databaseQuery.queryStarting(atValue: value)
  145. databaseQuery = databaseQuery.queryStarting(atValue: value, childKey: childKey)
  146. databaseQuery = databaseQuery.queryStarting(afterValue: value)
  147. databaseQuery = databaseQuery.queryStarting(afterValue: value, childKey: childKey)
  148. databaseQuery = databaseQuery.queryEnding(atValue: value)
  149. databaseQuery = databaseQuery.queryEnding(beforeValue: value)
  150. databaseQuery = databaseQuery.queryEnding(beforeValue: value, childKey: childKey)
  151. databaseQuery = databaseQuery.queryEqual(toValue: value)
  152. databaseQuery = databaseQuery.queryEqual(toValue: value, childKey: childKey)
  153. // Retrieve DatabaseReference Instance
  154. databaseReference = databaseQuery.ref
  155. // MARK: - DatabaseReference
  156. let priorityAny: Any = "priority"
  157. let values = [AnyHashable: Any]()
  158. var transactionResult = TransactionResult()
  159. // Retrieve Child DatabaseReference
  160. databaseReference = databaseReference.child(child)
  161. databaseReference = databaseReference.childByAutoId()
  162. // Set value
  163. databaseReference.setValue(value)
  164. // setValue(_ value:withCompletionBlock block:)
  165. databaseReference.setValue(value) { optionalError, databaseReference in
  166. let /* optionalError */ _: Error? = optionalError
  167. let /* databaseReference */ _: DatabaseReference = databaseReference
  168. }
  169. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  170. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  171. Task {
  172. do {
  173. // setValue(_ value:)
  174. let /* ref */ _: DatabaseReference = try await DatabaseReference().setValue(value)
  175. } catch {
  176. // ...
  177. }
  178. }
  179. }
  180. databaseReference.setValue(value, andPriority: priority)
  181. // setValue(_ value:andPriority priority:withCompletionBlock block:)
  182. databaseReference.setValue(value, andPriority: priority) { optionalError, databaseReference in
  183. let /* optionalError */ _: Error? = optionalError
  184. let /* databaseReference */ _: DatabaseReference = databaseReference
  185. }
  186. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  187. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  188. Task {
  189. do {
  190. // setValue(_ value:andPriority priority:)
  191. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  192. .setValue(value, andPriority: priority)
  193. } catch {
  194. // ...
  195. }
  196. }
  197. }
  198. // Remove value
  199. databaseReference.removeValue()
  200. // removeValue(completionBlock block:)
  201. databaseReference.removeValue { optionalError, databaseReference in
  202. let /* optionalError */ _: Error? = optionalError
  203. let /* databaseReference */ _: DatabaseReference = databaseReference
  204. }
  205. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  206. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  207. Task {
  208. do {
  209. let /* ref */ _: DatabaseReference = try await DatabaseReference().removeValue()
  210. } catch {
  211. // ...
  212. }
  213. }
  214. }
  215. // Set priority
  216. databaseReference.setPriority(priority)
  217. // setPriority(_ priority:withCompletionBlock block:)
  218. databaseReference.setPriority(priority) { optionalError, databaseReference in
  219. let /* optionalError */ _: Error? = optionalError
  220. let /* databaseReference */ _: DatabaseReference = databaseReference
  221. }
  222. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  223. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  224. Task {
  225. do {
  226. // setPriority(_ priority:)
  227. let /* ref */ _: DatabaseReference = try await DatabaseReference().setPriority(priority)
  228. } catch {
  229. // ...
  230. }
  231. }
  232. }
  233. // Update child values
  234. databaseReference.updateChildValues(values)
  235. // updateChildValues(_ values:withCompletionBlock block:)
  236. databaseReference.updateChildValues(values) { optionalError, databaseReference in
  237. let /* optionalError */ _: Error? = optionalError
  238. let /* databaseReference */ _: DatabaseReference = databaseReference
  239. }
  240. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  241. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  242. Task {
  243. do {
  244. // updateChildValues(_ values:)
  245. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  246. .updateChildValues(values)
  247. } catch {
  248. // ...
  249. }
  250. }
  251. }
  252. // Observe for data
  253. // observe(_ eventType:with block:)
  254. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
  255. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  256. }
  257. // observe(_ eventType:andPreviousSiblingKeyWith block:)
  258. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
  259. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  260. let /* optionalString */ _: String? = optionalString
  261. }
  262. // observe(_ eventType:with block:withCancel cancelBlock:)
  263. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
  264. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  265. } withCancel: { error in
  266. let /* error */ _: Error = error
  267. }
  268. // observe(_ eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  269. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
  270. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  271. let /* optionalString */ _: String? = optionalString
  272. } withCancel: { error in
  273. let /* error */ _: Error = error
  274. }
  275. // Observe Single Event
  276. // observeSingleEvent(of eventType:with block:)
  277. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
  278. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  279. }
  280. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
  281. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  282. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  283. let /* optionalString */ _: String? = optionalString
  284. }
  285. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  286. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  287. Task {
  288. // observeSingleEvent(of eventType:)
  289. let _: (DataSnapshot, String?) = await DatabaseReference()
  290. .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
  291. }
  292. }
  293. // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
  294. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
  295. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  296. } withCancel: { error in
  297. let /* error */ _: Error = error
  298. }
  299. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  300. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  301. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  302. let /* optionalString */ _: String? = optionalString
  303. } withCancel: { error in
  304. let /* error */ _: Error = error
  305. }
  306. // Get data
  307. // getData(completion block:)
  308. databaseReference.getData { optionalError, dataSnapshot in
  309. let /* optionalError */ _: Error? = optionalError
  310. let /* dataSnapshot */ _: DataSnapshot? = dataSnapshot
  311. }
  312. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  313. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  314. Task {
  315. do {
  316. let /* dataSnapshot */ _: DataSnapshot = try await DatabaseReference().getData()
  317. } catch {
  318. // ...
  319. }
  320. }
  321. }
  322. // Remove Observers
  323. databaseReference.removeObserver(withHandle: databaseHandle)
  324. databaseReference.removeAllObservers()
  325. // Keep Synced
  326. databaseReference.keepSynced(yes)
  327. // Limited Views of Data
  328. databaseQuery = databaseReference.queryLimited(toFirst: databaseHandle)
  329. databaseQuery = databaseReference.queryLimited(toLast: databaseHandle)
  330. databaseQuery = databaseReference.queryOrdered(byChild: child)
  331. databaseQuery = databaseReference.queryOrderedByKey()
  332. databaseQuery = databaseReference.queryOrderedByPriority()
  333. databaseQuery = databaseReference.queryStarting(atValue: value)
  334. databaseQuery = databaseReference.queryStarting(atValue: value, childKey: childKey)
  335. databaseQuery = databaseReference.queryStarting(afterValue: value)
  336. databaseQuery = databaseReference.queryStarting(afterValue: value, childKey: childKey)
  337. databaseQuery = databaseReference.queryEnding(atValue: value)
  338. databaseQuery = databaseReference.queryEnding(atValue: value, childKey: childKey)
  339. databaseQuery = databaseReference.queryEqual(toValue: value)
  340. databaseQuery = databaseReference.queryEqual(toValue: value, childKey: childKey)
  341. // onDisconnectSetValue
  342. databaseReference.onDisconnectSetValue(value)
  343. // onDisconnectSetValue(_ value:withCompletionBlock block:)
  344. databaseReference.onDisconnectSetValue(value) { optionalError, databaseReference in
  345. let /* optionalError */ _: Error? = optionalError
  346. let /* databaseReference */ _: DatabaseReference = databaseReference
  347. }
  348. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  349. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  350. Task {
  351. do {
  352. // onDisconnectSetValue(_ value:)
  353. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  354. .onDisconnectSetValue(value)
  355. } catch {
  356. // ...
  357. }
  358. }
  359. }
  360. databaseReference.onDisconnectSetValue(value, andPriority: priorityAny)
  361. // onDisconnectSetValue(_ value:andPriority priority:withCompletionBlock block:)
  362. databaseReference
  363. .onDisconnectSetValue(value, andPriority: priority) { optionalError, databaseReference in
  364. let /* optionalError */ _: Error? = optionalError
  365. let /* databaseReference */ _: DatabaseReference = databaseReference
  366. }
  367. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  368. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  369. Task {
  370. do {
  371. // onDisconnectSetValue(_ value:andPriority priority:)
  372. let /* ref */ _: DatabaseReference = try await DatabaseReference().onDisconnectSetValue(
  373. value,
  374. andPriority: priority
  375. )
  376. } catch {
  377. // ...
  378. }
  379. }
  380. }
  381. // onDisconnectRemoveValue
  382. databaseReference.onDisconnectRemoveValue()
  383. // onDisconnectRemoveValue(completionBlock block:)
  384. databaseReference.onDisconnectRemoveValue { optionalError, databaseReference in
  385. let /* optionalError */ _: Error? = optionalError
  386. let /* databaseReference */ _: DatabaseReference = databaseReference
  387. }
  388. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  389. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  390. Task {
  391. do {
  392. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  393. .onDisconnectRemoveValue()
  394. } catch {
  395. // ...
  396. }
  397. }
  398. }
  399. // onDisconnectUpdateChildValues
  400. databaseReference.onDisconnectUpdateChildValues(values)
  401. // onDisconnectUpdateChildValues(_ values:withCompletionBlock block:)
  402. databaseReference.onDisconnectUpdateChildValues(values) { optionalError, databaseReference in
  403. let /* optionalError */ _: Error? = optionalError
  404. let /* databaseReference */ _: DatabaseReference = databaseReference
  405. }
  406. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  407. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  408. Task {
  409. do {
  410. // onDisconnectUpdateChildValues(_ values:)
  411. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  412. .onDisconnectUpdateChildValues(values)
  413. } catch {
  414. // ...
  415. }
  416. }
  417. }
  418. // cancelDisconnectOperations
  419. databaseReference.cancelDisconnectOperations()
  420. // cancelDisconnectOperations(completionBlock block:)
  421. databaseReference.cancelDisconnectOperations { optionalError, databaseReference in
  422. let /* optionalError */ _: Error? = optionalError
  423. let /* databaseReference */ _: DatabaseReference = databaseReference
  424. }
  425. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  426. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  427. Task {
  428. do {
  429. let /* ref */ _: DatabaseReference = try await DatabaseReference()
  430. .cancelDisconnectOperations()
  431. } catch {
  432. // ...
  433. }
  434. }
  435. }
  436. // runTransactionBlock
  437. // runTransactionBlock(_ block:)
  438. databaseReference.runTransactionBlock { mutableData in
  439. let /* mutableData */ _: MutableData = mutableData
  440. return transactionResult
  441. }
  442. // runTransactionBlock(_ block:andCompletionBlock completionBlock:)
  443. databaseReference.runTransactionBlock { mutableData in
  444. let /* mutableData */ _: MutableData = mutableData
  445. return transactionResult
  446. } andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
  447. let /* optionalError */ _: Error? = optionalError
  448. let /* bool */ _: Bool = bool
  449. let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
  450. }
  451. if #available(iOS 13.0, macOS 10.15, macCatalyst 13.0, tvOS 13.0, watchOS 7.0, *) {
  452. // async/await is a Swift Concurrency feature available on iOS 13+ and macOS 10.15+
  453. Task {
  454. do {
  455. // runTransactionBlock(_ block:)
  456. let _: (Bool, DataSnapshot) = try await DatabaseReference()
  457. .runTransactionBlock { mutableData in
  458. let /* mutableData */ _: MutableData = mutableData
  459. return TransactionResult()
  460. }
  461. } catch {
  462. // ...
  463. }
  464. }
  465. }
  466. // runTransactionBlock(_ block:andCompletionBlock completionBlock:withLocalEvents localEvents:)
  467. databaseReference.runTransactionBlock({ mutableData in
  468. let /* mutableData */ _: MutableData = mutableData
  469. return transactionResult
  470. }, andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
  471. let /* optionalError */ _: Error? = optionalError
  472. let /* bool */ _: Bool = bool
  473. let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
  474. }, withLocalEvents: yes)
  475. // description
  476. let /* description */ _: String = databaseReference.description()
  477. // Class methods
  478. DatabaseReference.goOffline()
  479. DatabaseReference.goOnline()
  480. // Instance properties
  481. let /* parent */ _: DatabaseReference? = databaseReference.parent
  482. let /* childKey */ _: String? = databaseReference.key
  483. databaseReference = databaseReference.root
  484. url = databaseReference.url
  485. database = databaseReference.database
  486. // MARK: - DataEventType
  487. let optionalDataEventType = DataEventType(rawValue: 0)
  488. switch optionalDataEventType {
  489. case .childAdded:
  490. break
  491. case .childRemoved:
  492. break
  493. case .childChanged:
  494. break
  495. case .childMoved:
  496. break
  497. case .value:
  498. break
  499. case .none, .some:
  500. break
  501. }
  502. // MARK: - DataSnapshot
  503. var dataSnapshot = DataSnapshot()
  504. // Navigating and inspecting a snapshot
  505. dataSnapshot = dataSnapshot.childSnapshot(forPath: path)
  506. let /* hasChild */ _: Bool = dataSnapshot.hasChild(child)
  507. let /* hasChildren */ _: Bool = dataSnapshot.hasChildren()
  508. let /* exists */ _: Bool = dataSnapshot.exists()
  509. // Data export
  510. let /* value */ _: Any? = dataSnapshot.valueInExportFormat()
  511. // Properties
  512. databaseReference = dataSnapshot.ref
  513. let /* value */ _: Any? = dataSnapshot.value
  514. let /* uint */ _: UInt = dataSnapshot.childrenCount
  515. let /* child */ _: String? = dataSnapshot.key
  516. let /* children */ _: NSEnumerator = dataSnapshot.children
  517. let /* priority */ _: Any? = dataSnapshot.priority
  518. // MARK: - MutableData
  519. var mutableData = MutableData()
  520. // Inspecting and navigating the data
  521. let /* hasChildren */ _: Bool = mutableData.hasChildren()
  522. let /* hasChild */ _: Bool = mutableData.hasChild(atPath: path)
  523. mutableData = mutableData.childData(byAppendingPath: path)
  524. // Properties
  525. let /* value */ _: Any? = mutableData.value
  526. let /* priority */ _: Any? = mutableData.priority
  527. let /* uint */ _: UInt = mutableData.childrenCount
  528. let /* children */ _: NSEnumerator = mutableData.children
  529. let /* childKey */ _: String? = mutableData.key
  530. // MARK: - ServerValue
  531. let nsNumber: NSNumber = 0
  532. let /* values */ _: [AnyHashable: Any] = ServerValue.timestamp()
  533. let /* values */ _: [AnyHashable: Any] = ServerValue.increment(nsNumber)
  534. // MARK: - TransactionResult
  535. transactionResult = TransactionResult.success(withValue: mutableData)
  536. transactionResult = TransactionResult.abort()
  537. }
  538. }