Skip to content

Commit

Permalink
feat: Add support for graphql
Browse files Browse the repository at this point in the history
  • Loading branch information
Pradumnasaraf committed May 26, 2023
1 parent 9ed94cd commit b71d56c
Show file tree
Hide file tree
Showing 17 changed files with 4,340 additions and 301 deletions.
6 changes: 6 additions & 0 deletions TODO.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- Update the release file from release.json to release.yml
- Add Gin support
- Create a Handler dir
- Add Basic Auth support
- Chnage prohect name to Contributors

3 changes: 2 additions & 1 deletion config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import (
)

func Config() {

err := godotenv.Load(".env")
if err != nil {
fmt.Println(".env file not found. Loading from os environment")
fmt.Println(".env file not found. Loading the system environment variables.")
}

}
61 changes: 0 additions & 61 deletions controller/controller.go

This file was deleted.

105 changes: 105 additions & 0 deletions database/mongo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package database

import (
"context"
"fmt"
"log"
"time"

"github.com/pradumnasaraf/go-api/graph/model"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)

var Collection *mongo.Collection
var Ctx context.Context

// MongoDB is a struct that holds the MongoDB client
type MongoDB struct {
Client *mongo.Client
}

// NewMongoDB creates a new MongoDB client and returns it
func NewMongoDB() *MongoDB {
// Create a context
Ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()

// Set client options
clientOptions := options.Client().ApplyURI("mongodb://localhost:27017")

// Connect to MongoDB
client, err := mongo.Connect(Ctx, clientOptions)
if err != nil {
log.Fatal(err)
}

// Check the connection
err = client.Ping(Ctx, nil)
if err != nil {
log.Fatal(err)
}

fmt.Println("Connected to MongoDB!")
Collection = client.Database("opensource").Collection("contributors")

return &MongoDB{
Client: client,
}
}

func (db *MongoDB) Add(contributor *model.Contributor) {
result, err := Collection.InsertOne(Ctx, contributor)

CheckNilErr(err)
fmt.Println("Inserted a single document: ", result.InsertedID)
}

func (db *MongoDB) GetAll() []*model.Contributor {
cursor, err := Collection.Find(context.Background(), bson.D{{}})
CheckNilErr(err)
defer cursor.Close(Ctx)
var result []*model.Contributor

for cursor.Next(context.Background()) {
var contributor *model.Contributor
err := cursor.Decode(&contributor)
CheckNilErr(err)

result = append(result, contributor)
}

return result
}

func (db *MongoDB) GetByID(id string) *model.Contributor {
filter := bson.M{"_id": id}
var contributor *model.Contributor
err := Collection.FindOne(Ctx, filter).Decode(&contributor)
CheckNilErr(err)
return contributor
}

func (db *MongoDB) UpdateByID(contributor *model.Contributor) {
filter := bson.M{"_id": contributor.ID}
update := bson.M{"$set": bson.M{"githubUsername": contributor.GithubUsername, "name": contributor.Name, "email": contributor.Email}}
result, err := Collection.UpdateOne(context.Background(), filter, update)

CheckNilErr(err)
fmt.Println("Updated the document: ", result.UpsertedID)
}

func (db *MongoDB) DeleteByID(id string) {
filter := bson.M{"_id": id}
result, err := Collection.DeleteOne(context.Background(), filter)

CheckNilErr(err)
fmt.Println("Deleted the document: ", result.DeletedCount)
}

func CheckNilErr(err error) {
if err != nil {
fmt.Println(err)
}
}
34 changes: 9 additions & 25 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,42 +3,26 @@ module github.com/pradumnasaraf/go-api
go 1.19

require (
github.com/gin-gonic/gin v1.9.0
github.com/99designs/gqlgen v0.17.31
github.com/joho/godotenv v1.5.1
go.mongodb.org/mongo-driver v1.11.2
github.com/vektah/gqlparser/v2 v2.5.1
go.mongodb.org/mongo-driver v1.11.6
)

require (
github.com/bytedance/sonic v1.8.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.11.2 // indirect
github.com/goccy/go-json v0.10.0 // indirect
github.com/agnivade/levenshtein v1.1.1 // indirect
github.com/golang/snappy v0.0.1 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.1 // indirect
github.com/klauspost/compress v1.13.6 // indirect
github.com/klauspost/cpuid/v2 v2.0.9 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.9 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
golang.org/x/crypto v0.5.0 // indirect
golang.org/x/net v0.7.0 // indirect
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
golang.org/x/sync v0.1.0 // indirect
golang.org/x/text v0.7.0 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit b71d56c

Please sign in to comment.