DatabaseAPITests.swift 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  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 Firebase 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.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. var uint: UInt = 0
  55. let dataEventType: DataEventType = .value
  56. var child = "child"
  57. var childKey: String? = "key"
  58. var value: Any? = "value"
  59. var priority: Any? = "priority"
  60. var databaseHandle: DatabaseHandle = uint
  61. var databaseQuery: 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 swift(>=5.5)
  92. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  93. // async/await is a Swift 5.5+ feature available on iOS 15+
  94. async {
  95. do {
  96. let /* dataSnapshot */ _: DataSnapshot = try await databaseQuery.getData()
  97. } catch {
  98. // ...
  99. }
  100. }
  101. }
  102. #endif // swift(>=5.5)
  103. // Observe Single Event
  104. // observeSingleEvent(of eventType:with block:)
  105. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
  106. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  107. }
  108. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
  109. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  110. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  111. let /* optionalString */ _: String? = optionalString
  112. }
  113. #if swift(>=5.5)
  114. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  115. // async/await is a Swift 5.5+ feature available on iOS 15+
  116. async {
  117. do {
  118. // observeSingleEvent(of eventType:)
  119. let _: (DataSnapshot, String?) = try await databaseQuery
  120. .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
  121. } catch {
  122. // ...
  123. }
  124. }
  125. }
  126. #endif // swift(>=5.5)
  127. // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
  128. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot in
  129. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  130. } withCancel: { error in
  131. let /* error */ _: Error = error
  132. }
  133. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  134. databaseQuery.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  135. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  136. let /* optionalString */ _: String? = optionalString
  137. } withCancel: { error in
  138. let /* error */ _: Error = error
  139. }
  140. // Remove Observers
  141. databaseQuery.removeObserver(withHandle: databaseHandle)
  142. databaseQuery.removeAllObservers()
  143. // Keep Synced
  144. databaseQuery.keepSynced(yes)
  145. // Limited Views of Data
  146. databaseQuery = databaseQuery.queryLimited(toFirst: databaseHandle)
  147. databaseQuery = databaseQuery.queryLimited(toLast: databaseHandle)
  148. databaseQuery = databaseQuery.queryOrdered(byChild: child)
  149. databaseQuery = databaseQuery.queryOrderedByKey()
  150. databaseQuery = databaseQuery.queryOrderedByValue()
  151. databaseQuery = databaseQuery.queryOrderedByPriority()
  152. databaseQuery = databaseQuery.queryStarting(atValue: value)
  153. databaseQuery = databaseQuery.queryStarting(atValue: value, childKey: childKey)
  154. databaseQuery = databaseQuery.queryStarting(afterValue: value)
  155. databaseQuery = databaseQuery.queryStarting(afterValue: value, childKey: childKey)
  156. databaseQuery = databaseQuery.queryEnding(atValue: value)
  157. databaseQuery = databaseQuery.queryEnding(beforeValue: value)
  158. databaseQuery = databaseQuery.queryEnding(beforeValue: value, childKey: childKey)
  159. databaseQuery = databaseQuery.queryEqual(toValue: value)
  160. databaseQuery = databaseQuery.queryEqual(toValue: value, childKey: childKey)
  161. // Retrieve DatabaseReference Instance
  162. databaseReference = databaseQuery.ref
  163. // MARK: - DatabaseReference
  164. let priorityAny: Any = "priority"
  165. var values = [AnyHashable: Any]()
  166. var transactionResult = TransactionResult()
  167. // Retreive Child DatabaseReference
  168. databaseReference = databaseReference.child(child)
  169. databaseReference = databaseReference.childByAutoId()
  170. // Set value
  171. databaseReference.setValue(value)
  172. // setValue(_ value:withCompletionBlock block:)
  173. databaseReference.setValue(value) { optionalError, databaseReference in
  174. let /* optionalError */ _: Error? = optionalError
  175. let /* databaseReference */ _: DatabaseReference = databaseReference
  176. }
  177. #if swift(>=5.5)
  178. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  179. // async/await is a Swift 5.5+ feature available on iOS 15+
  180. async {
  181. do {
  182. // setValue(_ value:)
  183. databaseReference = try await databaseReference.setValue(value)
  184. } catch {
  185. // ...
  186. }
  187. }
  188. }
  189. #endif // swift(>=5.5)
  190. databaseReference.setValue(value, andPriority: priority)
  191. // setValue(_ value:andPriority priority:withCompletionBlock block:)
  192. databaseReference.setValue(value, andPriority: priority) { optionalError, databaseReference in
  193. let /* optionalError */ _: Error? = optionalError
  194. let /* databaseReference */ _: DatabaseReference = databaseReference
  195. }
  196. #if swift(>=5.5)
  197. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  198. // async/await is a Swift 5.5+ feature available on iOS 15+
  199. async {
  200. do {
  201. // setValue(_ value:andPriority priority:)
  202. databaseReference = try await databaseReference.setValue(value, andPriority: priority)
  203. } catch {
  204. // ...
  205. }
  206. }
  207. }
  208. #endif // swift(>=5.5)
  209. // Remove value
  210. databaseReference.removeValue()
  211. // removeValue(completionBlock block:)
  212. databaseReference.removeValue { optionalError, databaseReference in
  213. let /* optionalError */ _: Error? = optionalError
  214. let /* databaseReference */ _: DatabaseReference = databaseReference
  215. }
  216. #if swift(>=5.5)
  217. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  218. // async/await is a Swift 5.5+ feature available on iOS 15+
  219. async {
  220. do {
  221. databaseReference = try await databaseReference.removeValue()
  222. } catch {
  223. // ...
  224. }
  225. }
  226. }
  227. #endif // swift(>=5.5)
  228. // Set priority
  229. databaseReference.setPriority(priority)
  230. // setPriority(_ priority:withCompletionBlock block:)
  231. databaseReference.setPriority(priority) { optionalError, databaseReference in
  232. let /* optionalError */ _: Error? = optionalError
  233. let /* databaseReference */ _: DatabaseReference = databaseReference
  234. }
  235. #if swift(>=5.5)
  236. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  237. // async/await is a Swift 5.5+ feature available on iOS 15+
  238. async {
  239. do {
  240. // setPriority(_ priority:)
  241. databaseReference = try await databaseReference.setPriority(priority)
  242. } catch {
  243. // ...
  244. }
  245. }
  246. }
  247. #endif // swift(>=5.5)
  248. // Update child values
  249. databaseReference.updateChildValues(values)
  250. // updateChildValues(_ values:withCompletionBlock block:)
  251. databaseReference.updateChildValues(values) { optionalError, databaseReference in
  252. let /* optionalError */ _: Error? = optionalError
  253. let /* databaseReference */ _: DatabaseReference = databaseReference
  254. }
  255. #if swift(>=5.5)
  256. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  257. // async/await is a Swift 5.5+ feature available on iOS 15+
  258. async {
  259. do {
  260. // updateChildValues(_ values:)
  261. databaseReference = try await databaseReference.updateChildValues(values)
  262. } catch {
  263. // ...
  264. }
  265. }
  266. }
  267. #endif // swift(>=5.5)
  268. // Observe for data
  269. // observe(_ eventType:with block:)
  270. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
  271. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  272. }
  273. // observe(_ eventType:andPreviousSiblingKeyWith block:)
  274. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
  275. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  276. let /* optionalString */ _: String? = optionalString
  277. }
  278. // observe(_ eventType:with block:withCancel cancelBlock:)
  279. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot in
  280. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  281. } withCancel: { error in
  282. let /* error */ _: Error = error
  283. }
  284. // observe(_ eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  285. databaseHandle = databaseReference.observe(dataEventType) { dataSnapshot, optionalString in
  286. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  287. let /* optionalString */ _: String? = optionalString
  288. } withCancel: { error in
  289. let /* error */ _: Error = error
  290. }
  291. // Observe Single Event
  292. // observeSingleEvent(of eventType:with block:)
  293. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
  294. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  295. }
  296. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:)
  297. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  298. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  299. let /* optionalString */ _: String? = optionalString
  300. }
  301. #if swift(>=5.5)
  302. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  303. // async/await is a Swift 5.5+ feature available on iOS 15+
  304. async {
  305. do {
  306. // observeSingleEvent(of eventType:)
  307. let _: (DataSnapshot, String?) = try await databaseReference
  308. .observeSingleEventAndPreviousSiblingKey(of: dataEventType)
  309. } catch {
  310. // ...
  311. }
  312. }
  313. }
  314. #endif // swift(>=5.5)
  315. // observeSingleEvent(of eventType:with block:withCancel cancelBlock:)
  316. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot in
  317. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  318. } withCancel: { error in
  319. let /* error */ _: Error = error
  320. }
  321. // observeSingleEvent(of eventType:andPreviousSiblingKeyWith block:withCancel cancelBlock:)
  322. databaseReference.observeSingleEvent(of: dataEventType) { dataSnapshot, optionalString in
  323. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  324. let /* optionalString */ _: String? = optionalString
  325. } withCancel: { error in
  326. let /* error */ _: Error = error
  327. }
  328. // Get data
  329. // getData(completion block:)
  330. databaseReference.getData { optionalError, dataSnapshot in
  331. let /* optionalError */ _: Error? = optionalError
  332. let /* dataSnapshot */ _: DataSnapshot = dataSnapshot
  333. }
  334. #if swift(>=5.5)
  335. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  336. // async/await is a Swift 5.5+ feature available on iOS 15+
  337. async {
  338. do {
  339. let /* dataSnapshot */ _: DataSnapshot = try await databaseReference.getData()
  340. } catch {
  341. // ...
  342. }
  343. }
  344. }
  345. #endif // swift(>=5.5)
  346. // Remove Observers
  347. databaseReference.removeObserver(withHandle: databaseHandle)
  348. databaseReference.removeAllObservers()
  349. // Keep Synced
  350. databaseReference.keepSynced(yes)
  351. // Limited Views of Data
  352. databaseQuery = databaseReference.queryLimited(toFirst: databaseHandle)
  353. databaseQuery = databaseReference.queryLimited(toLast: databaseHandle)
  354. databaseQuery = databaseReference.queryOrdered(byChild: child)
  355. databaseQuery = databaseReference.queryOrderedByKey()
  356. databaseQuery = databaseReference.queryOrderedByPriority()
  357. databaseQuery = databaseReference.queryStarting(atValue: value)
  358. databaseQuery = databaseReference.queryStarting(atValue: value, childKey: childKey)
  359. databaseQuery = databaseReference.queryStarting(afterValue: value)
  360. databaseQuery = databaseReference.queryStarting(afterValue: value, childKey: childKey)
  361. databaseQuery = databaseReference.queryEnding(atValue: value)
  362. databaseQuery = databaseReference.queryEnding(atValue: value, childKey: childKey)
  363. databaseQuery = databaseReference.queryEqual(toValue: value)
  364. databaseQuery = databaseReference.queryEqual(toValue: value, childKey: childKey)
  365. // onDisconnectSetValue
  366. databaseReference.onDisconnectSetValue(value)
  367. // onDisconnectSetValue(_ value:withCompletionBlock block:)
  368. databaseReference.onDisconnectSetValue(value) { optionalError, databaseReference in
  369. let /* optionalError */ _: Error? = optionalError
  370. let /* databaseReference */ _: DatabaseReference = databaseReference
  371. }
  372. #if swift(>=5.5)
  373. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  374. // async/await is a Swift 5.5+ feature available on iOS 15+
  375. async {
  376. do {
  377. // onDisconnectSetValue(_ value:)
  378. databaseReference = try await databaseReference.onDisconnectSetValue(value)
  379. } catch {
  380. // ...
  381. }
  382. }
  383. }
  384. #endif // swift(>=5.5)
  385. databaseReference.onDisconnectSetValue(value, andPriority: priorityAny)
  386. // onDisconnectSetValue(_ value:andPriority priority:withCompletionBlock block:)
  387. databaseReference
  388. .onDisconnectSetValue(value, andPriority: priority) { optionalError, databaseReference in
  389. let /* optionalError */ _: Error? = optionalError
  390. let /* databaseReference */ _: DatabaseReference = databaseReference
  391. }
  392. #if swift(>=5.5)
  393. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  394. // async/await is a Swift 5.5+ feature available on iOS 15+
  395. async {
  396. do {
  397. // onDisconnectSetValue(_ value:andPriority priority:)
  398. databaseReference = try await databaseReference.onDisconnectSetValue(
  399. value,
  400. andPriority: priority
  401. )
  402. } catch {
  403. // ...
  404. }
  405. }
  406. }
  407. #endif // swift(>=5.5)
  408. // onDisconnectRemoveValue
  409. databaseReference.onDisconnectRemoveValue()
  410. // onDisconnectRemoveValue(completionBlock block:)
  411. databaseReference.onDisconnectRemoveValue { optionalError, databaseReference in
  412. let /* optionalError */ _: Error? = optionalError
  413. let /* databaseReference */ _: DatabaseReference = databaseReference
  414. }
  415. #if swift(>=5.5)
  416. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  417. // async/await is a Swift 5.5+ feature available on iOS 15+
  418. async {
  419. do {
  420. databaseReference = try await databaseReference.onDisconnectRemoveValue()
  421. } catch {
  422. // ...
  423. }
  424. }
  425. }
  426. #endif // swift(>=5.5)
  427. // onDisconnectUpdateChildValues
  428. databaseReference.onDisconnectUpdateChildValues(values)
  429. // onDisconnectUpdateChildValues(_ values:withCompletionBlock block:)
  430. databaseReference.onDisconnectUpdateChildValues(values) { optionalError, databaseReference in
  431. let /* optionalError */ _: Error? = optionalError
  432. let /* databaseReference */ _: DatabaseReference = databaseReference
  433. }
  434. #if swift(>=5.5)
  435. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  436. // async/await is a Swift 5.5+ feature available on iOS 15+
  437. async {
  438. do {
  439. // onDisconnectUpdateChildValues(_ values:)
  440. databaseReference = try await databaseReference.onDisconnectUpdateChildValues(values)
  441. } catch {
  442. // ...
  443. }
  444. }
  445. }
  446. #endif // swift(>=5.5)
  447. // cancelDisconnectOperations
  448. databaseReference.cancelDisconnectOperations()
  449. // cancelDisconnectOperations(completionBlock block:)
  450. databaseReference.cancelDisconnectOperations { optionalError, databaseReference in
  451. let /* optionalError */ _: Error? = optionalError
  452. let /* databaseReference */ _: DatabaseReference = databaseReference
  453. }
  454. #if swift(>=5.5)
  455. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  456. // async/await is a Swift 5.5+ feature available on iOS 15+
  457. async {
  458. do {
  459. databaseReference = try await databaseReference.cancelDisconnectOperations()
  460. } catch {
  461. // ...
  462. }
  463. }
  464. }
  465. #endif // swift(>=5.5)
  466. // runTransactionBlock
  467. // runTransactionBlock(_ block:)
  468. databaseReference.runTransactionBlock { mutableData in
  469. let /* mutableData */ _: MutableData = mutableData
  470. return transactionResult
  471. }
  472. // runTransactionBlock(_ block:andCompletionBlock completionBlock:)
  473. databaseReference.runTransactionBlock { mutableData in
  474. let /* mutableData */ _: MutableData = mutableData
  475. return transactionResult
  476. } andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
  477. let /* optionalError */ _: Error? = optionalError
  478. let /* bool */ _: Bool = bool
  479. let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
  480. }
  481. #if swift(>=5.5)
  482. if #available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, *) {
  483. // async/await is a Swift 5.5+ feature available on iOS 15+
  484. async {
  485. do {
  486. // runTransactionBlock(_ block:)
  487. let _: (Bool, DataSnapshot) = try await databaseReference
  488. .runTransactionBlock { mutableData in
  489. let /* mutableData */ _: MutableData = mutableData
  490. return transactionResult
  491. }
  492. } catch {
  493. // ...
  494. }
  495. }
  496. }
  497. #endif // swift(>=5.5)
  498. // runTransactionBlock(_ block:andCompletionBlock completionBlock:withLocalEvents localEvents:)
  499. databaseReference.runTransactionBlock({ mutableData in
  500. let /* mutableData */ _: MutableData = mutableData
  501. return transactionResult
  502. }, andCompletionBlock: { optionalError, bool, optionalDataSnapshot in
  503. let /* optionalError */ _: Error? = optionalError
  504. let /* bool */ _: Bool = bool
  505. let /* optionalDataSnapshot */ _: DataSnapshot? = optionalDataSnapshot
  506. }, withLocalEvents: yes)
  507. // description
  508. let /* description */ _: String = databaseReference.description()
  509. // Class methods
  510. DatabaseReference.goOffline()
  511. DatabaseReference.goOnline()
  512. // Instance properties
  513. let /* parent */ _: DatabaseReference? = databaseReference.parent
  514. databaseReference = databaseReference.root
  515. childKey = databaseReference.key
  516. url = databaseReference.url
  517. database = databaseReference.database
  518. // MARK: - DataEventType
  519. let optionalDataEventType = DataEventType(rawValue: 0)
  520. switch optionalDataEventType {
  521. case .childAdded:
  522. break
  523. case .childRemoved:
  524. break
  525. case .childChanged:
  526. break
  527. case .childMoved:
  528. break
  529. case .value:
  530. break
  531. case .none, .some:
  532. break
  533. }
  534. // MARK: - DataSnapshot
  535. var dataSnapshot = DataSnapshot()
  536. // Navigating and inspecting a snapshot
  537. dataSnapshot = dataSnapshot.childSnapshot(forPath: path)
  538. let /* hasChild */ _: Bool = dataSnapshot.hasChild(child)
  539. let /* hasChildren */ _: Bool = dataSnapshot.hasChildren()
  540. let /* exists */ _: Bool = dataSnapshot.exists()
  541. // Data export
  542. value = dataSnapshot.valueInExportFormat()
  543. // Properties
  544. value = dataSnapshot.value
  545. uint = dataSnapshot.childrenCount
  546. databaseReference = dataSnapshot.ref
  547. child = dataSnapshot.key
  548. let /* children */ _: NSEnumerator = dataSnapshot.children
  549. priority = dataSnapshot.priority
  550. // MARK: - MutableData
  551. var mutableData = MutableData()
  552. // Inspecting and navigating the data
  553. let /* hasChildren */ _: Bool = mutableData.hasChildren()
  554. let /* hasChild */ _: Bool = mutableData.hasChild(atPath: path)
  555. mutableData = mutableData.childData(byAppendingPath: path)
  556. // Properties
  557. value = mutableData.value
  558. priority = mutableData.priority
  559. uint = mutableData.childrenCount
  560. let /* children */ _: NSEnumerator = mutableData.children
  561. childKey = mutableData.key
  562. // MARK: - ServerValue
  563. let nsNumber: NSNumber = 0
  564. values = ServerValue.timestamp()
  565. values = ServerValue.increment(nsNumber)
  566. // MARK: - TransactionResult
  567. transactionResult = TransactionResult.success(withValue: mutableData)
  568. transactionResult = TransactionResult.abort()
  569. }
  570. }