All Projects → vmanot → Swiftdb

vmanot / Swiftdb

Licence: mit
A modern database abstraction layer, batteries included.

Programming Languages

swift
15916 projects
dsl
153 projects

Projects that are alternatives of or similar to Swiftdb

Avsqldebugger
A Simple Core Data Debugger that will look inside your apps DB
Stars: ✭ 30 (-83.61%)
Mutual labels:  sql, coredata, database
Sqlservice
The missing SQLAlchemy ORM interface.
Stars: ✭ 159 (-13.11%)
Mutual labels:  sql, database
Justpersist
JustPersist is the easiest and safest way to do persistence on iOS with Core Data support out of the box. It also allows you to migrate to any other persistence framework with minimal effort.
Stars: ✭ 157 (-14.21%)
Mutual labels:  coredata, database
Sqlcheck
Automatically identify anti-patterns in SQL queries
Stars: ✭ 2,062 (+1026.78%)
Mutual labels:  sql, database
Nut
Advanced, Powerful and easy to use ORM for Qt
Stars: ✭ 181 (-1.09%)
Mutual labels:  sql, database
Norm
Access a database in one line of code.
Stars: ✭ 152 (-16.94%)
Mutual labels:  sql, database
Ohmysql
Easy direct access to your database 🎯 http://oleghnidets.github.io/OHMySQL/
Stars: ✭ 166 (-9.29%)
Mutual labels:  sql, database
Sequelize Ui
Browser-based GUI for previewing and generating Sequelize project files.
Stars: ✭ 142 (-22.4%)
Mutual labels:  sql, database
Linq2db
Linq to database provider.
Stars: ✭ 2,211 (+1108.2%)
Mutual labels:  sql, database
Rocksdb Sharp
.net bindings for the rocksdb by facebook
Stars: ✭ 173 (-5.46%)
Mutual labels:  wrapper, database
Web Database Analytics
Web scrapping and related analytics using Python tools
Stars: ✭ 175 (-4.37%)
Mutual labels:  sql, database
Bats
面向 OLTP、OLAP、批处理、流处理场景的大一统 SQL 引擎
Stars: ✭ 152 (-16.94%)
Mutual labels:  sql, database
Spark With Python
Fundamentals of Spark with Python (using PySpark), code examples
Stars: ✭ 150 (-18.03%)
Mutual labels:  sql, database
Myproxy
A sharding proxy for MYSQL databases
Stars: ✭ 153 (-16.39%)
Mutual labels:  sql, database
Querybuilder
SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird
Stars: ✭ 2,111 (+1053.55%)
Mutual labels:  sql, database
Sqldb Logger
A logger for Go SQL database driver without modify existing *sql.DB stdlib usage.
Stars: ✭ 160 (-12.57%)
Mutual labels:  sql, database
Tpcds Kit
TPC-DS benchmark kit with some modifications/fixes
Stars: ✭ 176 (-3.83%)
Mutual labels:  sql, database
Stratosdb
☄️ ☁️ An All-in-One GUI for Cloud SQL that can help users design and test their AWS RDS Instances
Stars: ✭ 140 (-23.5%)
Mutual labels:  sql, database
Laravel Db Profiler
Database Profiler for Laravel Web and Console Applications.
Stars: ✭ 141 (-22.95%)
Mutual labels:  sql, database
Query Exporter
Export Prometheus metrics from SQL queries
Stars: ✭ 166 (-9.29%)
Mutual labels:  sql, database

SwiftDB

A type-safe, SwiftUI-inspired wrapper around CoreData.

Get Started

Define an Entity:

struct Foo: Entity, Identifiable {
    @Attribute var bar: String = "Untitled"
    
    var id: some Hashable {
        bar
    }
}

Define a Schema:

struct MySchema: Schema {
    var entities: Entities {
        Foo.self
    }
}

Create a ContentView for your application:

struct ContentView: View {
    @StateObject var container = PersistentContainer(MySchema())
    
    var body: some View {
        Text("Hello World")
    }
}

Create a list view:

struct ListView: View {
    @EnvironmentObject var container: PersistentContainer
    
    @FetchModels<Foo>() var models
    
    var body: some View {
        NavigationView {
            List(models) { foo in
                NavigationLink(destination: EditView(foo: foo)) {
                    Text(foo.bar)
                }
                .contextMenu {
                    Button {
                        container.delete(foo)
                    } label: {
                        Text("Delete")
                    }
                }
            }
            .navigationBarItems(
                trailing: Button {
                    container.create(Foo.self)
                } label: {
                    Image(systemName: .plusCircleFill)
                        .imageScale(.large)
                }
            )
            .navigationBarTitle("A List of Foo")
        }
    }
    
    struct EditView: View {
        @EnvironmentObject var container: PersistentContainer
        
        let foo: Foo
        
        var body: some View {
            VStack {
                Form {
                    TextField("Enter a value", text: foo.$bar) {
                        container.save()
                    }
                }
            }
            .navigationBarTitle("Edit Foo")
        }
    }
}

Add it to our ContentView:

struct ContentView: View {
    @StateObject var container = PersistentContainer(MySchema())
    
    var body: some View {
        ListView()
            .persistentContainer(container)
    }
}

That's it.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].