Skip to content

Commit

Permalink
Add quickstart docs for the database ORM
Browse files Browse the repository at this point in the history
Signed-off-by: Masudur Rahman <masudjuly02@gmail.com>
  • Loading branch information
masudur-rahman committed Mar 29, 2024
1 parent a15a9ce commit 7eace7d
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 7 deletions.
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,62 @@
# database
Database Engine for different SQL and NoSQL databases

## Install
```shell
go get -u github.com/masudur-rahman/database
```

## Quickstart

```go
package main

import (
"context"
"time"

"github.com/masudur-rahman/database/sql"
"github.com/masudur-rahman/database/sql/sqlite"
"github.com/masudur-rahman/database/sql/sqlite/lib"
)

type User struct {
ID int64 `db:"id,pk autoincr"`
Name string `db:"name,uq"`
FullName string `db:"full_name,uqs"`
Email string `db:",uqs"`
CreatedAt time.Time `db:"created_at"`
}

func main() {
// Create sqlite connection
conn, _ := lib.GetSQLiteConnection("test.db")

// Start a database engine
var db sql.Database
db = sqlite.NewSqlite(context.Background(), conn)

// Migrate database
db.Sync(User{})

db = db.Table("user")

// Insert
db.InsertOne(&User{Name: "masud", FullName: "Masudur Rahman", Email: "masud@example.com"})

// Read
var user User
db.ID(1).FindOne(&user)
db.Where("email=?", "masud@example.com").FindOne(&user)
db.FindOne(&user, User{Name: "masud"})
db.Columns("name", "email").FindOne(&user, User{Name: "masud"}) // fetch only name, email columns

// Update
db.ID(user.ID).UpdateOne(User{Email: "test@example.com"})
db.Where("email=?", "test@example.com").UpdateOne(User{FullName: "Test User"})

// Delete
db.ID(1).DeleteOne() // delete by id
db.DeleteOne(User{Name: "masud"}) // delete using filter
}
```
50 changes: 50 additions & 0 deletions examples/quickstart.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package examples

import (
"context"
"time"

"github.com/masudur-rahman/database/sql"
"github.com/masudur-rahman/database/sql/sqlite"
"github.com/masudur-rahman/database/sql/sqlite/lib"
)

type User struct {
ID int64 `db:"id,pk autoincr"`
Name string `db:"name,uq"`
FullName string `db:"full_name,uqs"`
Email string `db:",uqs"`
CreatedAt time.Time `db:"created_at"`
}

func main() {
// Create sqlite connection
conn, _ := lib.GetSQLiteConnection("test.db")

// Start a database engine
var db sql.Database
db = sqlite.NewSqlite(context.Background(), conn)

// Migrate database
db.Sync(User{})

db = db.Table("user")

// Insert
db.InsertOne(&User{Name: "masud", FullName: "Masudur Rahman", Email: "masud@example.com"})

// Read
var user User
db.ID(1).FindOne(&user)
db.Where("email=?", "masud@example.com").FindOne(&user)
db.FindOne(&user, User{Name: "masud"})
db.Columns("name", "email").FindOne(&user, User{Name: "masud"}) // fetch only name, email columns

// Update
db.ID(user.ID).UpdateOne(User{Email: "test@example.com"})
db.Where("email=?", "test@example.com").UpdateOne(User{FullName: "Test User"})

// Delete
db.ID(1).DeleteOne() // delete by id
db.DeleteOne(User{Name: "masud"}) // delete using filter
}
10 changes: 5 additions & 5 deletions sql/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ type Database interface {
Table(name string) Database

ID(id any) Database
In(string, ...any) Database
Where(string, ...any) Database
Columns(...string) Database
In(col string, values ...any) Database
Where(cond string, args ...any) Database
Columns(cols ...string) Database
AllCols() Database
MustCols(...string) Database
MustCols(cols ...string) Database
ShowSQL(showSQL bool) Database

FindOne(document any, filter ...any) (bool, error)
Expand All @@ -28,7 +28,7 @@ type Database interface {
Query(query string, args ...any) (*sql.Rows, error)
Exec(query string, args ...any) (sql.Result, error)

Sync(...any) error
Sync(tables ...any) error

Close() error
}
4 changes: 2 additions & 2 deletions sql/postgres/postgres.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,10 @@ func (pg Postgres) Exec(query string, args ...any) (sql.Result, error) {
return pg.conn.ExecContext(pg.ctx, query, args...)
}

func (p Postgres) Sync(tables ...any) error {
func (pg Postgres) Sync(tables ...any) error {
ctx := context.Background()
for _, table := range tables {
if err := lib.SyncTable(ctx, p.conn, table); err != nil {
if err := lib.SyncTable(ctx, pg.conn, table); err != nil {
return err
}
}
Expand Down

0 comments on commit 7eace7d

Please sign in to comment.