Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Fabian Vitt
good2go
Commits
8b20d21c
Commit
8b20d21c
authored
Jun 03, 2020
by
Max Richter
Browse files
fix(mongo): finally fix nil reference error in room repository
parent
73fdb3b7
Pipeline
#1773
passed with stages
in 1 minute and 30 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
database/mongo/main.go
View file @
8b20d21c
package
mongo
import
(
"log"
"time"
repos
"git.coco.study/fvitt/good2go/database/mongo/repositories"
...
...
@@ -10,7 +9,7 @@ import (
var
(
// RoomRepository does crud stuff
r
oomRepo
=
repos
.
RoomRepository
R
oomRepo
*
repos
.
RoomRepository
)
// Init initializes connection to a database
...
...
@@ -24,9 +23,9 @@ func Init() {
// Connect to a specified database
db
:=
client
.
Database
(
utils
.
GetDBName
())
// C
onnect
the repositories
repos
.
RoomRepository
.
ConnectTo
(
db
.
Collection
(
"rooms"
))
log
.
Print
(
"All rooms"
,
roomRepo
.
GetAllRooms
())
// C
reate
the repositories
RoomRepo
=
&
repos
.
RoomRepository
{
Col
:
db
.
Collection
(
"rooms"
),
}
}
database/mongo/repositories/room_repository.go
View file @
8b20d21c
...
...
@@ -13,22 +13,17 @@ import (
"go.mongodb.org/mongo-driver/mongo"
)
type
r
oomRepository
struct
{
c
*
mongo
.
Collection
type
R
oomRepository
struct
{
Col
*
mongo
.
Collection
}
var
(
// RoomRepository CRID
RoomRepository
=
&
roomRepository
{}
)
func
(
repo
roomRepository
)
findByRoomNumber
(
roomNumber
int
)
(
*
model
.
Room
,
error
)
{
func
(
repo
*
RoomRepository
)
findByRoomNumber
(
roomNumber
int
)
(
*
model
.
Room
,
error
)
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
// Find
result
,
err
:=
repo
.
c
.
Find
(
ctx
,
bson
.
M
{
"number"
:
roomNumber
})
result
,
err
:=
repo
.
Col
.
Find
(
ctx
,
bson
.
M
{
"number"
:
roomNumber
})
if
err
!=
nil
{
return
&
model
.
Room
{},
err
}
...
...
@@ -44,13 +39,13 @@ func (repo roomRepository) findByRoomNumber(roomNumber int) (*model.Room, error)
}
func
(
repo
r
oomRepository
)
findByID
(
id
primitive
.
ObjectID
)
(
*
model
.
Room
,
error
)
{
func
(
repo
*
R
oomRepository
)
findByID
(
id
primitive
.
ObjectID
)
(
*
model
.
Room
,
error
)
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
// Find
result
,
err
:=
repo
.
c
.
Find
(
ctx
,
bson
.
M
{
"_id"
:
id
})
result
,
err
:=
repo
.
Col
.
Find
(
ctx
,
bson
.
M
{
"_id"
:
id
})
if
err
!=
nil
{
return
&
model
.
Room
{},
err
}
...
...
@@ -65,13 +60,13 @@ func (repo roomRepository) findByID(id primitive.ObjectID) (*model.Room, error)
return
&
r
,
nil
}
func
(
repo
r
oomRepository
)
insertOne
(
document
interface
{})
(
*
model
.
Room
,
error
)
{
func
(
repo
*
R
oomRepository
)
insertOne
(
document
interface
{})
(
*
model
.
Room
,
error
)
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
// Insert
result
,
err
:=
repo
.
c
.
InsertOne
(
ctx
,
document
)
result
,
err
:=
repo
.
Col
.
InsertOne
(
ctx
,
document
)
if
err
!=
nil
{
return
&
model
.
Room
{},
err
}
...
...
@@ -80,36 +75,36 @@ func (repo roomRepository) insertOne(document interface{}) (*model.Room, error)
return
repo
.
findByID
(
result
.
InsertedID
.
(
primitive
.
ObjectID
))
}
func
(
repo
r
oomRepository
)
updateOne
(
document
interface
{})
{
func
(
repo
*
R
oomRepository
)
updateOne
(
document
interface
{})
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
repo
.
c
.
UpdateOne
(
ctx
,
document
,
document
)
repo
.
Col
.
UpdateOne
(
ctx
,
document
,
document
)
}
func
(
repo
r
oomRepository
)
findOne
(
document
interface
{})
(
*
model
.
Room
,
error
)
{
func
(
repo
*
R
oomRepository
)
findOne
(
document
interface
{})
(
*
model
.
Room
,
error
)
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
result
:=
repo
.
c
.
FindOne
(
ctx
,
document
)
result
:=
repo
.
Col
.
FindOne
(
ctx
,
document
)
var
room
model
.
Room
err
:=
result
.
Decode
(
&
room
)
return
&
room
,
err
}
func
(
repo
r
oomRepository
)
deleteByID
(
id
primitive
.
ObjectID
)
error
{
func
(
repo
*
R
oomRepository
)
deleteByID
(
id
primitive
.
ObjectID
)
error
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
_
,
error
:=
repo
.
c
.
DeleteOne
(
ctx
,
bson
.
M
{
"_id"
:
id
})
_
,
error
:=
repo
.
Col
.
DeleteOne
(
ctx
,
bson
.
M
{
"_id"
:
id
})
return
error
}
func
(
repo
r
oomRepository
)
CreateRoom
(
r
*
model
.
Room
)
(
*
model
.
Room
,
error
)
{
func
(
repo
*
R
oomRepository
)
CreateRoom
(
r
*
model
.
Room
)
(
*
model
.
Room
,
error
)
{
log
.
Print
(
"Create room "
,
r
.
Number
)
...
...
@@ -135,21 +130,21 @@ func (repo roomRepository) CreateRoom(r *model.Room) (*model.Room, error) {
return
room
,
err
}
func
(
repo
r
oomRepository
)
UpdateRoom
(
r
*
model
.
Room
)
{
func
(
repo
*
R
oomRepository
)
UpdateRoom
(
r
*
model
.
Room
)
{
repo
.
updateOne
(
r
)
}
func
(
repo
r
oomRepository
)
GetRoom
(
document
interface
{})
(
room
*
model
.
Room
,
err
error
)
{
func
(
repo
*
R
oomRepository
)
GetRoom
(
document
interface
{})
(
room
*
model
.
Room
,
err
error
)
{
log
.
Print
(
"Finding room by "
,
document
)
return
repo
.
findOne
(
document
)
}
func
(
repo
r
oomRepository
)
GetAllRooms
()
[]
model
.
Room
{
func
(
repo
*
R
oomRepository
)
GetAllRooms
()
[]
model
.
Room
{
ctx
,
cancel
:=
utils
.
CreateTimoutCTX
(
5
*
time
.
Second
)
ctx
,
cancel
:=
utils
.
CreateTim
e
outCTX
(
5
*
time
.
Second
)
defer
cancel
()
cursor
,
err
:=
repo
.
c
.
Find
(
ctx
,
bson
.
M
{})
cursor
,
err
:=
repo
.
Col
.
Find
(
ctx
,
bson
.
M
{})
if
err
!=
nil
{
log
.
Fatal
(
"[MONGODB] roomRepository"
,
err
)
}
...
...
@@ -162,7 +157,7 @@ func (repo roomRepository) GetAllRooms() []model.Room {
return
rooms
}
func
(
repo
r
oomRepository
)
ConnectTo
(
c
*
mongo
.
Collection
)
*
r
oomRepository
{
repo
.
c
=
c
func
(
repo
R
oomRepository
)
ConnectTo
(
c
*
mongo
.
Collection
)
*
R
oomRepository
{
repo
.
Col
=
c
return
&
repo
}
database/mongo/repositories/room_repository_test.go
View file @
8b20d21c
...
...
@@ -8,12 +8,12 @@ import (
"go.mongodb.org/mongo-driver/mongo"
)
var
repo
*
r
oomRepository
var
repo
*
R
oomRepository
func
TestMain
(
m
*
testing
.
M
)
{
// Mock the collection
repo
=
r
oomRepository
{}
.
ConnectTo
(
&
mongo
.
Collection
{})
repo
=
R
oomRepository
{}
.
ConnectTo
(
&
mongo
.
Collection
{})
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment