Skip to content

Instantly share code, notes, and snippets.

View sedataktas's full-sized avatar

Sedat Aktaş sedataktas

View GitHub Profile
@sedataktas
sedataktas / db.go
Created December 27, 2020 15:28
DeleteBook in mongodb with golang
func DeleteBook(id primitive.ObjectID) error {
_, err := BooksCollection.DeleteOne(Ctx, bson.D{{"_id", id}})
if err != nil {
return err
}
return nil
}
@sedataktas
sedataktas / db.go
Created December 27, 2020 15:20
FindAuthorBooks in mongodb with golang
type AuthorBooks struct {
FullName string `bson:"full_name"`
Books []Book
}
func FindAuthorBooks(fullName string) ([]Book, error) {
matchStage := bson.D{{"$match", bson.D{{"full_name", fullName}}}}
lookupStage := bson.D{{"$lookup",
bson.D{{"from", "books"},
@sedataktas
sedataktas / db.go
Last active December 26, 2020 21:56
UpdateBook in mongodb with golang
func UpdateBook(id primitive.ObjectID, pageCount int) error {
filter := bson.D{{"_id", id}}
update := bson.D{{"$set", bson.D{{"page_count", pageCount}}}}
_, err := BooksCollection.UpdateOne(
Ctx,
filter,
update,
)
return err
}
@sedataktas
sedataktas / db.go
Created December 26, 2020 21:41
GetBooks in mongodb with golang
func GetBooks() ([]Book, error) {
var book Book
var books []Book
cursor, err := BooksCollection.Find(Ctx, bson.D{})
if err != nil {
defer cursor.Close(Ctx)
return books, err
}
@sedataktas
sedataktas / db.go
Created December 26, 2020 21:26
Get Book from mongodb in golang
func GetBook(id string) (Book, error) {
var b Book
objectId, err := primitive.ObjectIDFromHex(id)
if err != nil{
return b,err
}
err = BooksCollection.
FindOne(Ctx, bson.D{{"_id", objectId}}).
Decode(&b)
@sedataktas
sedataktas / db.go
Created December 26, 2020 20:59
Create Book
func CreateBook(b Book) (string, error) {
result, err := BooksCollection.InsertOne(Ctx, b)
if err != nil {
return "0", err
}
return fmt.Sprintf("%v", result.InsertedID), err
}
@sedataktas
sedataktas / models.go
Last active December 27, 2020 15:20
models for mondo crud op with golang
type Book struct {
Name string `bson:"name"`
Author string `bson:"author"`
PageCount int `bson:"page_count"`
}
type Author struct {
FullName string `bson:"full_name"`
}
@sedataktas
sedataktas / db.go
Last active December 24, 2020 22:06
MongoDB conenction
import (
"context"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
var (
BooksCollection *mongo.Collection
AuthorsCollection *mongo.Collection
@sedataktas
sedataktas / handlers_test.go
Created December 19, 2020 19:36
Test Get Books with suite
func (suite *TestSuiteEnv)Test_GetBooks_EmptyResult() {
req, w := setGetBooksRouter(suite.db)
a := suite.Assert()
a.Equal(http.MethodGet, req.Method, "HTTP request method error")
a.Equal(http.StatusOK, w.Code, "HTTP request status code error")
body, err := ioutil.ReadAll(w.Body)
if err != nil {
a.Error(err)
@sedataktas
sedataktas / handlers_test.go
Last active December 19, 2020 19:29
test suite
type TestSuiteEnv struct {
suite.Suite
db *gorm.DB
}
// Testler başlamadan önce çalıştırılıyor
func (suite *TestSuiteEnv) SetupSuite() {
database.Setup()
suite.db = database.GetDB()
}