Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
colorway
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
golang
colorway
Commits
37fa6718
Commit
37fa6718
authored
Jul 02, 2025
by
zhengyaoqiu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(database): mongodb 初始化
parent
684e445d
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
196 additions
and
0 deletions
+196
-0
generate.go
internal/pkg/database/mongo/generate.go
+5
-0
model.go
internal/pkg/database/mongo/model.go
+72
-0
option.go
internal/pkg/database/mongo/option.go
+20
-0
error.go
internal/pkg/database/mongo/product/error.go
+12
-0
productmodel.go
internal/pkg/database/mongo/product/productmodel.go
+25
-0
productmodelgen.go
internal/pkg/database/mongo/product/productmodelgen.go
+23
-0
producttypes.go
internal/pkg/database/mongo/product/producttypes.go
+14
-0
model.tpl
internal/pkg/database/mongo/templates/mongo/model.tpl
+25
-0
No files found.
internal/pkg/database/mongo/generate.go
0 → 100644
View file @
37fa6718
package
model
//go:generate goctl template init --home ./templates
//go:generate goctl model mongo --type Product --dir product --home ./templates
internal/pkg/database/mongo/model.go
0 → 100644
View file @
37fa6718
package
model
import
(
"context"
"github.com/zeromicro/go-zero/core/stores/mon"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type
Model
[
T
any
]
interface
{
Find
(
ctx
context
.
Context
,
filter
bson
.
M
,
findOptions
...*
options
.
FindOptions
)
([]
T
,
int64
,
error
)
FindOne
(
ctx
context
.
Context
,
filter
bson
.
M
,
findOneOptions
...*
options
.
FindOneOptions
)
(
T
,
error
)
UpdateOne
(
ctx
context
.
Context
,
filter
bson
.
M
,
update
bson
.
D
,
updateOptions
...*
options
.
UpdateOptions
)
(
*
mongo
.
UpdateResult
,
error
)
Traverse
(
ctx
context
.
Context
,
filter
bson
.
M
,
f
func
(
document
T
)
(
bool
,
error
),
findOptions
...*
options
.
FindOptions
)
error
BulkWrite
(
ctx
context
.
Context
,
writeModels
[]
mongo
.
WriteModel
,
opts
...*
options
.
BulkWriteOptions
)
(
*
mongo
.
BulkWriteResult
,
error
)
}
type
BaseModel
[
T
any
]
struct
{
model
*
mon
.
Model
}
func
NewBaseModel
[
T
any
](
model
*
mon
.
Model
)
*
BaseModel
[
T
]
{
return
&
BaseModel
[
T
]{
model
:
model
}
}
func
(
receiver
*
BaseModel
[
T
])
Find
(
ctx
context
.
Context
,
filter
bson
.
M
,
findOptions
...*
options
.
FindOptions
)
([]
T
,
int64
,
error
)
{
total
,
err
:=
receiver
.
model
.
CountDocuments
(
ctx
,
filter
)
if
err
!=
nil
{
return
nil
,
0
,
err
}
var
documents
[]
T
err
=
receiver
.
model
.
Find
(
ctx
,
&
documents
,
filter
,
findOptions
...
)
return
documents
,
total
,
err
}
func
(
receiver
*
BaseModel
[
T
])
FindOne
(
ctx
context
.
Context
,
filter
bson
.
M
,
findOneOptions
...*
options
.
FindOneOptions
)
(
T
,
error
)
{
var
document
T
err
:=
receiver
.
model
.
FindOne
(
ctx
,
&
document
,
filter
,
findOneOptions
...
)
return
document
,
err
}
func
(
receiver
*
BaseModel
[
T
])
UpdateOne
(
ctx
context
.
Context
,
filter
bson
.
M
,
update
bson
.
D
,
updateOptions
...*
options
.
UpdateOptions
)
(
*
mongo
.
UpdateResult
,
error
)
{
return
receiver
.
model
.
UpdateOne
(
ctx
,
filter
,
update
,
updateOptions
...
)
}
func
(
receiver
*
BaseModel
[
T
])
Traverse
(
ctx
context
.
Context
,
filter
bson
.
M
,
f
func
(
document
T
)
(
bool
,
error
),
findOptions
...*
options
.
FindOptions
)
error
{
cursor
,
err
:=
receiver
.
model
.
Collection
.
Find
(
ctx
,
filter
,
findOptions
...
)
if
err
!=
nil
{
return
err
}
defer
cursor
.
Close
(
ctx
)
for
cursor
.
Next
(
ctx
)
{
var
document
T
err
=
cursor
.
Decode
(
&
document
)
if
err
!=
nil
{
return
err
}
next
,
err
:=
f
(
document
)
if
err
!=
nil
{
return
err
}
if
!
next
{
return
nil
}
}
return
nil
}
func
(
receiver
*
BaseModel
[
T
])
BulkWrite
(
ctx
context
.
Context
,
writeModels
[]
mongo
.
WriteModel
,
opts
...*
options
.
BulkWriteOptions
)
(
*
mongo
.
BulkWriteResult
,
error
)
{
return
receiver
.
model
.
BulkWrite
(
ctx
,
writeModels
,
opts
...
)
}
internal/pkg/database/mongo/option.go
0 → 100644
View file @
37fa6718
package
model
import
"go.mongodb.org/mongo-driver/mongo/options"
func
PaginationOption
(
page
,
size
int64
)
*
options
.
FindOptions
{
if
page
<=
0
{
page
=
1
}
if
size
<=
0
{
size
=
10
}
opt
:=
options
.
Find
()
skip
:=
(
page
-
1
)
*
size
opt
.
SetSkip
(
skip
)
.
SetLimit
(
size
)
return
opt
}
func
UpsertOption
()
*
options
.
UpdateOptions
{
return
options
.
Update
()
.
SetUpsert
(
true
)
}
internal/pkg/database/mongo/product/error.go
0 → 100644
View file @
37fa6718
package
model
import
(
"errors"
"github.com/zeromicro/go-zero/core/stores/mon"
)
var
(
ErrNotFound
=
mon
.
ErrNotFound
ErrInvalidObjectId
=
errors
.
New
(
"invalid objectId"
)
)
internal/pkg/database/mongo/product/productmodel.go
0 → 100644
View file @
37fa6718
package
model
import
"github.com/zeromicro/go-zero/core/stores/mon"
var
_
ProductModel
=
(
*
customProductModel
)(
nil
)
type
(
// ProductModel is an interface to be customized, add more methods here,
// and implement the added methods in customProductModel.
ProductModel
interface
{
productModel
}
customProductModel
struct
{
*
defaultProductModel
}
)
// NewProductModel returns a model for the mongo.
func
NewProductModel
(
url
,
db
,
collection
string
)
ProductModel
{
conn
:=
mon
.
MustNewModel
(
url
,
db
,
collection
)
return
&
customProductModel
{
defaultProductModel
:
newDefaultProductModel
(
conn
),
}
}
internal/pkg/database/mongo/product/productmodelgen.go
0 → 100644
View file @
37fa6718
// Code generated by goctl. DO NOT EDIT.
package
model
import
(
model
"git.chillcy.com/golang/colorway/internal/pkg/database/mongo"
"github.com/zeromicro/go-zero/core/stores/mon"
)
type
productModel
interface
{
model
.
Model
[
Product
]
}
type
defaultProductModel
struct
{
conn
*
mon
.
Model
model
.
Model
[
Product
]
}
func
newDefaultProductModel
(
conn
*
mon
.
Model
)
*
defaultProductModel
{
return
&
defaultProductModel
{
conn
:
conn
,
Model
:
model
.
NewBaseModel
[
Product
](
conn
),
}
}
internal/pkg/database/mongo/product/producttypes.go
0 → 100644
View file @
37fa6718
package
model
import
(
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type
Product
struct
{
ID
primitive
.
ObjectID
`bson:"_id,omitempty" json:"id,omitempty"`
// TODO: Fill your own fields
UpdateAt
time
.
Time
`bson:"updateAt,omitempty" json:"updateAt,omitempty"`
CreateAt
time
.
Time
`bson:"createAt,omitempty" json:"createAt,omitempty"`
}
internal/pkg/database/mongo/templates/mongo/model.tpl
0 → 100644
View file @
37fa6718
// Code generated by goctl. DO NOT EDIT.
package model
import (
model "git.chillcy.com/golang/colorway/internal/pkg/database/mongo"
{
{
if
.
Cache
}
}"github.com/zeromicro/go-zero/core/stores/monc"{
{
else
}
}"github.com/zeromicro/go-zero/core/stores/mon"{
{
end
}
}
)
{
{
if
.
Cache
}
}var prefix{{.Type}}CacheKey = "cache:{{.lowerType}}:"{
{
end
}
}
type {{.lowerType}}Model interface{
model.Model[{{.Type}}]
}
type default{{.Type}}Model struct {
conn {
{
if
.
Cache
}
}*monc.Model{
{
else
}
}*mon.Model{
{
end
}
}
model.Model[{{.Type}}]
}
func newDefault{{.Type}}Model(conn {
{
if
.
Cache
}
}*monc.Model{
{
else
}
}*mon.Model{
{
end
}
}) *default{{.Type}}Model {
return
&
default{{.Type}}Model{
conn: conn,
Model: model.NewBaseModel[{{.Type}}](conn),
}
}
\ No newline at end of file
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