Code Monkey home page Code Monkey logo

realmstore's Introduction

RealmStore

Build Status Cocoapods Compatible Carthage compatible Language Readme Score

A lightweight framework which provides abstraction for database operations, base on RealmSwift. RealmSwift usage simple. RealStore provides simplest usage.

Usage

Create your own model:

struct Publisher {
    public let name: String
    public let surname: String
}

Create realm object:

class PublisherEntity: Object{
    @objc dynamic var name = ""
    @objc dynamic var surname = ""
}

Implement RealmEntity protocol which does the magic.

extension Publisher: RealmEntity{
    public init(_ entity: PublisherEntity){
        name = entity.name
        surname = entity.surname
    }

    public var entity: PublisherEntity{
        let publisher = PublisherEntity()
        publisher.name = name
        publisher.surname = surname
        return publisher
    }
}

Create your store. Usage is as simple as possible. All realm operations done with your model Publisher.

let publisherStore = RealmStore<Publisher>()
let publisher = Publisher(name:"Volkan", surname: "Bicer")

//inserts publisher
publisherStore.insert(publisher)

//returns [Publisher]
let publisherList = publishStore.getAll()

//removes publishers from database
publisherStore.clean()

Query

To query you must implement RealmQuery protocol. Simple usage shown below.

extension Publisher: RealmQuery{
    enum Query: QueryType{
        case name(String)
        case surname(String)
        
        var predicate: NSPredicate?{
            switch self {
            case .name(let value):
                return NSPredicate(format: "name == %@", value)
            case .surname(let value):
                return NSPredicate(format: "surname == %@", value)
            }
        }
        
        var sortDescriptors: [SortDescriptor]{
            return [SortDescriptor(keyPath:"name")]
        }
    }
}

To query objects just use filter function. It returns an array.

let publisherStore = RealmStore<Publisher>()
publisherStore.insert(Publisher(name: "Volkan", surname: "Bicer"))
let filteredPublishers = publisherStore.filter(with: .name("Volkan"))

Installation

RealmStore can be added to your project using CocoaPods by adding the following line to your Podfile:

pod 'RealmStore'

If you're using Carthage you can add a dependency on RealmStore by adding it to your Cartfile:

github "https://github.com/vbicer/RealmStore"

realmstore's People

Contributors

volkanbicer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.