/FireRecord-iOS

Swift ActiveRecord-inspired model for Firebase. Still in development.

Primary LanguageSwiftMIT LicenseMIT

FireRecord-iOS

Version License Platform Swift 4.0

FireRecord is a framework written in swift which brings the ActiveRecord architecture as a wrapper to Firebase SDK on iOS. The main idea is to make iOS development with Firebase (Firestore and Storage) still more productive with the well-known Active Record Pattern from Rails community.

If you liked this library take a look at the Android Kotlin version

Example

Inherit from FireRecord

class User: FireRecord {
  var age: Int?
  var name: String?
  var photo: FirebaseImage?
}

Init your model

let user = User()
user.name = "Jhon"
user.photo = FirebaseImage(UIImage())

Save

user.save { error in print(error ?? errorMessage) }

Read

User.all { users in
  users.flatMap{ $0.name }.forEach{ print($0) }
}

User.findFirst { user in
  print(user.name ?? "First users doesn't have name")
}

User.findLast { user in
  print(user.name ?? "Last users doesn't have name")
}

User.findFirst(3) { users in
  users.forEach { user in print(user.name ?? " User doesn't have name")}
}

User.findLast(3) { users in
  users.forEach { user in print(user.name ?? " User doesn't have name")}
}

Update

user.name = "My new Name"
user.update { error in print(error ?? errorMessage) }

Delete

user.destroy { error in print(error ?? errorMessage)}

Query

User.order(byProperty: "name").where(value: "Alisson").find { users in
  users.flatMap{ $0.name }.forEach{ print($0) }                          //print all names
}

Professional.order(byProperty: "phone").where(value: "98984933").find { professionals in
  professionals.flatMap{ $0.phone }.forEach{ print($0) }                //print all phones
}

User.order(byProperty: "name").findLast { user in
  print(user.name ?? "Property not present")
}

User.order(byProperty: "name").findLast(3) { users in
  print(users.count)
}

User.order(byProperty: "name").findFirst { user in
  print(user.name ?? "Property not present")
}

Features

  • Basic CRUD functionality with Realtime Database
  • Map queries from Realtime Database
  • Manage image/file properties (send/retrieve from Storage)
  • Add realtime Capabilities
  • Add relationship mapping
  • Add offline capabilities

PS: We are going to chage Realtime Database for Cloud Firestore soon. Stay Tunned!

See open issues for more details

Requirements

Add Firebase to your project

Installation

FireRecord is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "FireRecord"

Authors

License

FireRecord is available under the MIT license. See the LICENSE file for more info.