Skip to content
Snippets Groups Projects
Commit df54ee30 authored by Bayu Samudra's avatar Bayu Samudra
Browse files

feat: adding repository

parent 1d7781fa
Branches
1 merge request!5Feat/s1 sb8 login api (emergency merge)
Pipeline #51516 passed with stage
in 2 minutes and 56 seconds
......@@ -15,6 +15,7 @@ require (
)
require (
github.com/DATA-DOG/go-sqlmock v1.5.0 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
......
......@@ -10,4 +10,5 @@ type UserClaim struct {
Name string `json:"name"`
Email string `json:"email"`
Role user.UserRole `json:"role"`
Type TokenType `json:"type"`
}
package repository
// var RepositorySet = wire.Value()
import (
"github.com/google/wire"
"gitlab.informatika.org/ocw/ocw-backend/repository/user"
)
var RepositoryBasicSet = wire.NewSet(
// User Repository
user.New,
wire.Bind(new(user.UserRepository), new(*user.UserRepositoryImpl)),
)
var RepositorySet = wire.NewSet(
RepositoryBasicSet,
)
package user
import (
"gitlab.informatika.org/ocw/ocw-backend/model/domain/user"
"gitlab.informatika.org/ocw/ocw-backend/utils/db"
"gorm.io/gorm"
)
type UserRepositoryImpl struct {
db *gorm.DB
}
func New(
db db.Database,
) *UserRepositoryImpl {
return &UserRepositoryImpl{db.Connect()}
}
func (repo UserRepositoryImpl) Add(user user.User) {
repo.db.Create(user)
}
func (repo UserRepositoryImpl) Get(username string) user.User {
result := user.User{}
repo.db.First(&result, "username = ?", username)
return result
}
func (repo UserRepositoryImpl) Update(user user.User) {
repo.db.Save(user)
}
func (repo UserRepositoryImpl) Delete(username string) {
repo.db.Delete(&user.User{}, "username = ?", username)
}
package db
import (
"database/sql"
"gitlab.informatika.org/ocw/ocw-backend/utils/env"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
type DatabaseImpl struct {
DB *gorm.DB
}
func NewPostgresConn(
conn *sql.Conn,
) (*DatabaseImpl, error) {
res, err := gorm.Open(postgres.New(postgres.Config{
Conn: conn,
}), &gorm.Config{})
if err != nil {
return nil, err
}
return &DatabaseImpl{res}, nil
}
func NewPostgresEnv(
env env.Environment,
) (*DatabaseImpl, error) {
res, err := gorm.Open(postgres.Open(env.DatabaseConnection), &gorm.Config{})
if err != nil {
return nil, err
}
return &DatabaseImpl{res}, nil
}
func (p DatabaseImpl) Connect() *gorm.DB {
return p.DB
}
package db
import "gorm.io/gorm"
type Database interface {
Connect() *gorm.DB
}
......@@ -3,6 +3,7 @@ package utils
import (
"github.com/google/wire"
"gitlab.informatika.org/ocw/ocw-backend/utils/app"
"gitlab.informatika.org/ocw/ocw-backend/utils/db"
"gitlab.informatika.org/ocw/ocw-backend/utils/env"
"gitlab.informatika.org/ocw/ocw-backend/utils/httputil"
"gitlab.informatika.org/ocw/ocw-backend/utils/log"
......@@ -10,6 +11,10 @@ import (
"gitlab.informatika.org/ocw/ocw-backend/utils/wrapper"
)
var DatabaseTestingSet = wire.NewSet(
db.NewPostgresConn,
)
var UtilSetTest = wire.NewSet(
// httputil utility
wire.Struct(new(httputil.HttpUtilImpl), "*"),
......@@ -35,6 +40,10 @@ var UtilSetTest = wire.NewSet(
var UtilSet = wire.NewSet(
UtilSetTest,
// Database utility
wire.Bind(new(db.Database), new(*db.DatabaseImpl)),
db.NewPostgresEnv,
// env
env.New,
)
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment