{"id":20663535,"url":"https://github.com/eugene-software/ezadatabase","last_synced_at":"2026-05-09T16:07:01.992Z","repository":{"id":62457615,"uuid":"554372389","full_name":"eugene-software/EZADatabase","owner":"eugene-software","description":"Convenient library to work with CoreData with Combine","archived":false,"fork":false,"pushed_at":"2024-12-05T13:44:54.000Z","size":145,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-17T23:02:54.183Z","etag":null,"topics":["combine","coredata","coredata-swift","coredatastack","database","database-management","ios","stack","swift","wrapper"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eugene-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-10-19T17:49:00.000Z","updated_at":"2024-12-05T13:44:58.000Z","dependencies_parsed_at":"2024-02-05T11:41:22.585Z","dependency_job_id":null,"html_url":"https://github.com/eugene-software/EZADatabase","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-software%2FEZADatabase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-software%2FEZADatabase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-software%2FEZADatabase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-software%2FEZADatabase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eugene-software","download_url":"https://codeload.github.com/eugene-software/EZADatabase/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242821487,"owners_count":20190654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["combine","coredata","coredata-swift","coredatastack","database","database-management","ios","stack","swift","wrapper"],"created_at":"2024-11-16T19:18:35.363Z","updated_at":"2026-05-09T16:06:56.943Z","avatar_url":"https://github.com/eugene-software.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EZADatabase\n\n[![Version](https://img.shields.io/cocoapods/v/EZADatabase.svg?style=flat)](https://cocoapods.org/pods/EZADatabase)\n[![License](https://img.shields.io/cocoapods/l/EZADatabase.svg?style=flat)](https://cocoapods.org/pods/EZADatabase)\n[![Platform](https://img.shields.io/cocoapods/p/EZADatabase.svg?style=flat)](https://cocoapods.org/pods/EZADatabase)\n\n## Requirements\n\n- iOS 13 and above\n\n## Usage Example\n\nImport dependenices:\n\n```swift\nimport Combine\nimport EZADatabase\n```\n\nIn AppDelegate run setup method:\n\n```swift\nfunc application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -\u003e Bool {\n    EZADatabase\n            .openDatabase()\n            .sink { completion in\n            } receiveValue: { _ in\n            }\n            .store(in: \u0026cancellables)\n    return true\n}\n```\n\nCreate CoreDataCompatible struct that reflects a CoreData model:\n\n```swift\n\nstruct User: Codable, Hashable {\n    \n    var userId: String\n    var userName: String\n}\n\nextension User: CoreDataCompatible {\n    \n    typealias ManagedType = CoreDataUser\n    \n    var primaryKey: Any {\n        return userId\n    }\n    \n    var primaryKeyName: String {\n        return \"userId\"\n    }\n    \n    init(managedObject: CoreDataUser) {\n        \n        userId = managedObject.userId\n        userName = managedObject.userName\n    }\n}\n```\n\nCreate NSManagedObject subclass that conforms to CoreDataExportable and reflects a CoreDataCompatible model:\n\n```swift\n@objc(CoreDataUser)\nclass CoreDataUser: NSManagedObject {\n\n    @NSManaged var userId: String\n    @NSManaged var userName: String\n}\n\nextension CoreDataUser : CoreDataExportable {\n    \n    typealias ExportType = User\n    \n    func configure(with object: User, in storage: EZADatabase.CoreDataStorageInterface) {\n        \n        userId = object.userId\n        userName = object.userName\n    }\n    \n    func getObject() -\u003e Device {\n        User(managedObject: self)\n    }\n}\n```\n\n- To store an object:\n\n```swift\n\nlet user = User(userId: \"someId\", userName: \"John\")\n\nEZADatabase.importRemoteList([user])\n    .sink { completion in\n        \n    } receiveValue: { _ in\n        \n    }\n    .store(in: \u0026cancellables)\n```\n\n- To receive an object:\n\n```swift\n\nEZADatabase.exportRemoteList(predicate: NSPredicate(key: \"userId\", value: \"someId\"))\n    .sink { completion in\n        \n    } receiveValue: { user in\n        print(user)\n    }\n    .store(in: \u0026cancellables)\n```\n\n## Installation\n\n### Cocoapods\nEZADatabase is available through [CocoaPods](https://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod 'EZADatabase'\n```\n\n### Swift Package Manager\n1. Right click in the Project Navigator\n2. Select \"Add Packages...\"\n3. Search for ```https://github.com/eugene-software/EZADatabase.git```\n\n## Author\n\nEugene Software\n\n## License\n\nEZADatabase is available under the MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feugene-software%2Fezadatabase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feugene-software%2Fezadatabase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feugene-software%2Fezadatabase/lists"}