Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
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
Vũ Hoàng Anh
canifa_note
Commits
fa2bba51
Unverified
Commit
fa2bba51
authored
Oct 09, 2023
by
Athurg Gooth
Committed by
GitHub
Oct 09, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add support for ListActivity (#2365)
Add support for ListActivity
parent
3822c26e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
91 additions
and
16 deletions
+91
-16
activity.go
store/activity.go
+8
-0
activity.go
store/db/mysql/activity.go
+44
-16
activity.go
store/db/sqlite/activity.go
+38
-0
driver.go
store/driver.go
+1
-0
No files found.
store/activity.go
View file @
fa2bba51
...
...
@@ -17,6 +17,14 @@ type Activity struct {
Payload
string
}
type
FindActivity
struct
{
ID
*
int32
}
func
(
s
*
Store
)
CreateActivity
(
ctx
context
.
Context
,
create
*
Activity
)
(
*
Activity
,
error
)
{
return
s
.
driver
.
CreateActivity
(
ctx
,
create
)
}
func
(
s
*
Store
)
ListActivity
(
ctx
context
.
Context
,
find
*
FindActivity
)
([]
*
Activity
,
error
)
{
return
s
.
driver
.
ListActivity
(
ctx
,
find
)
}
store/db/mysql/activity.go
View file @
fa2bba51
...
...
@@ -37,22 +37,50 @@ func (d *DB) CreateActivity(ctx context.Context, create *store.Activity) (*store
return
nil
,
errors
.
Wrap
(
err
,
"failed to get last insert id"
)
}
return
d
.
FindActivity
(
ctx
,
id
)
id32
:=
int32
(
id
)
list
,
err
:=
d
.
ListActivity
(
ctx
,
&
store
.
FindActivity
{
ID
:
&
id32
})
if
err
!=
nil
||
len
(
list
)
==
0
{
return
nil
,
errors
.
Wrap
(
err
,
"failed to find activity"
)
}
return
list
[
0
],
nil
}
func
(
d
*
DB
)
FindActivity
(
ctx
context
.
Context
,
id
int64
)
(
*
store
.
Activity
,
error
)
{
var
activity
store
.
Activity
stmt
:=
"SELECT `id`, `creator_id`, `type`, `level`, `payload`, UNIX_TIMESTAMP(`created_ts`) FROM `activity` WHERE `id` = ?"
if
err
:=
d
.
db
.
QueryRowContext
(
ctx
,
stmt
,
id
)
.
Scan
(
&
activity
.
ID
,
&
activity
.
CreatorID
,
&
activity
.
Type
,
&
activity
.
Level
,
&
activity
.
Payload
,
&
activity
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"failed to db.QueryRow"
)
}
return
&
activity
,
nil
func
(
d
*
DB
)
ListActivity
(
ctx
context
.
Context
,
find
*
store
.
FindActivity
)
([]
*
store
.
Activity
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
find
.
ID
!=
nil
{
where
,
args
=
append
(
where
,
"`id` = ?"
),
append
(
args
,
*
find
.
ID
)
}
query
:=
"SELECT `id`, `creator_id`, `type`, `level`, `payload`, UNIX_TIMESTAMP(`created_ts`) FROM `activity` WHERE "
+
strings
.
Join
(
where
,
" AND "
)
rows
,
err
:=
d
.
db
.
QueryContext
(
ctx
,
query
,
args
...
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
store
.
Activity
{}
for
rows
.
Next
()
{
activity
:=
&
store
.
Activity
{}
if
err
:=
rows
.
Scan
(
&
activity
.
ID
,
&
activity
.
CreatorID
,
&
activity
.
Type
,
&
activity
.
Level
,
&
activity
.
Payload
,
&
activity
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
activity
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
}
store/db/sqlite/activity.go
View file @
fa2bba51
...
...
@@ -34,3 +34,41 @@ func (d *DB) CreateActivity(ctx context.Context, create *store.Activity) (*store
return
create
,
nil
}
func
(
d
*
DB
)
ListActivity
(
ctx
context
.
Context
,
find
*
store
.
FindActivity
)
([]
*
store
.
Activity
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
find
.
ID
!=
nil
{
where
,
args
=
append
(
where
,
"`id` = ?"
),
append
(
args
,
*
find
.
ID
)
}
query
:=
"SELECT `id`, `creator_id`, `type`, `level`, `payload`, `created_ts` FROM `activity` WHERE "
+
strings
.
Join
(
where
,
" AND "
)
rows
,
err
:=
d
.
db
.
QueryContext
(
ctx
,
query
,
args
...
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
store
.
Activity
{}
for
rows
.
Next
()
{
activity
:=
&
store
.
Activity
{}
if
err
:=
rows
.
Scan
(
&
activity
.
ID
,
&
activity
.
CreatorID
,
&
activity
.
Type
,
&
activity
.
Level
,
&
activity
.
Payload
,
&
activity
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
activity
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
}
store/driver.go
View file @
fa2bba51
...
...
@@ -19,6 +19,7 @@ type Driver interface {
// Activity model related methods.
CreateActivity
(
ctx
context
.
Context
,
create
*
Activity
)
(
*
Activity
,
error
)
ListActivity
(
ctx
context
.
Context
,
find
*
FindActivity
)
([]
*
Activity
,
error
)
// Resource model related methods.
CreateResource
(
ctx
context
.
Context
,
create
*
Resource
)
(
*
Resource
,
error
)
...
...
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