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
4180cc3a
Commit
4180cc3a
authored
Sep 26, 2023
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: migrate storage to driver
parent
d6789550
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
143 additions
and
102 deletions
+143
-102
driver.go
store/driver.go
+6
-0
storage.go
store/sqlite/storage.go
+133
-0
storage.go
store/storage.go
+4
-102
No files found.
store/driver.go
View file @
4180cc3a
...
...
@@ -36,4 +36,10 @@ type Driver interface {
UpsertTag
(
ctx
context
.
Context
,
upsert
*
Tag
)
(
*
Tag
,
error
)
ListTags
(
ctx
context
.
Context
,
find
*
FindTag
)
([]
*
Tag
,
error
)
DeleteTag
(
ctx
context
.
Context
,
delete
*
DeleteTag
)
error
CreateStorage
(
ctx
context
.
Context
,
create
*
Storage
)
(
*
Storage
,
error
)
ListStorages
(
ctx
context
.
Context
,
find
*
FindStorage
)
([]
*
Storage
,
error
)
GetStorage
(
ctx
context
.
Context
,
find
*
FindStorage
)
(
*
Storage
,
error
)
UpdateStorage
(
ctx
context
.
Context
,
update
*
UpdateStorage
)
(
*
Storage
,
error
)
DeleteStorage
(
ctx
context
.
Context
,
delete
*
DeleteStorage
)
error
}
store/sqlite/storage.go
0 → 100644
View file @
4180cc3a
package
sqlite
import
(
"context"
"strings"
"github.com/usememos/memos/store"
)
func
(
d
*
Driver
)
CreateStorage
(
ctx
context
.
Context
,
create
*
store
.
Storage
)
(
*
store
.
Storage
,
error
)
{
stmt
:=
`
INSERT INTO storage (
name,
type,
config
)
VALUES (?, ?, ?)
RETURNING id
`
if
err
:=
d
.
db
.
QueryRowContext
(
ctx
,
stmt
,
create
.
Name
,
create
.
Type
,
create
.
Config
)
.
Scan
(
&
create
.
ID
,
);
err
!=
nil
{
return
nil
,
err
}
storage
:=
create
return
storage
,
nil
}
func
(
d
*
Driver
)
ListStorages
(
ctx
context
.
Context
,
find
*
store
.
FindStorage
)
([]
*
store
.
Storage
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
find
.
ID
!=
nil
{
where
,
args
=
append
(
where
,
"id = ?"
),
append
(
args
,
*
find
.
ID
)
}
rows
,
err
:=
d
.
db
.
QueryContext
(
ctx
,
`
SELECT
id,
name,
type,
config
FROM storage
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
+
`
ORDER BY id DESC`
,
args
...
,
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
store
.
Storage
{}
for
rows
.
Next
()
{
storage
:=
&
store
.
Storage
{}
if
err
:=
rows
.
Scan
(
&
storage
.
ID
,
&
storage
.
Name
,
&
storage
.
Type
,
&
storage
.
Config
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
storage
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
}
func
(
d
*
Driver
)
GetStorage
(
ctx
context
.
Context
,
find
*
store
.
FindStorage
)
(
*
store
.
Storage
,
error
)
{
list
,
err
:=
d
.
ListStorages
(
ctx
,
find
)
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
list
)
==
0
{
return
nil
,
nil
}
return
list
[
0
],
nil
}
func
(
d
*
Driver
)
UpdateStorage
(
ctx
context
.
Context
,
update
*
store
.
UpdateStorage
)
(
*
store
.
Storage
,
error
)
{
set
,
args
:=
[]
string
{},
[]
any
{}
if
update
.
Name
!=
nil
{
set
=
append
(
set
,
"name = ?"
)
args
=
append
(
args
,
*
update
.
Name
)
}
if
update
.
Config
!=
nil
{
set
=
append
(
set
,
"config = ?"
)
args
=
append
(
args
,
*
update
.
Config
)
}
args
=
append
(
args
,
update
.
ID
)
stmt
:=
`
UPDATE storage
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
WHERE id = ?
RETURNING
id,
name,
type,
config
`
storage
:=
&
store
.
Storage
{}
if
err
:=
d
.
db
.
QueryRowContext
(
ctx
,
stmt
,
args
...
)
.
Scan
(
&
storage
.
ID
,
&
storage
.
Name
,
&
storage
.
Type
,
&
storage
.
Config
,
);
err
!=
nil
{
return
nil
,
err
}
return
storage
,
nil
}
func
(
d
*
Driver
)
DeleteStorage
(
ctx
context
.
Context
,
delete
*
store
.
DeleteStorage
)
error
{
stmt
:=
`
DELETE FROM storage
WHERE id = ?
`
result
,
err
:=
d
.
db
.
ExecContext
(
ctx
,
stmt
,
delete
.
ID
)
if
err
!=
nil
{
return
err
}
if
_
,
err
:=
result
.
RowsAffected
();
err
!=
nil
{
return
err
}
return
nil
}
store/storage.go
View file @
4180cc3a
...
...
@@ -2,7 +2,6 @@ package store
import
(
"context"
"strings"
)
type
Storage
struct
{
...
...
@@ -27,66 +26,11 @@ type DeleteStorage struct {
}
func
(
s
*
Store
)
CreateStorage
(
ctx
context
.
Context
,
create
*
Storage
)
(
*
Storage
,
error
)
{
stmt
:=
`
INSERT INTO storage (
name,
type,
config
)
VALUES (?, ?, ?)
RETURNING id
`
if
err
:=
s
.
db
.
QueryRowContext
(
ctx
,
stmt
,
create
.
Name
,
create
.
Type
,
create
.
Config
)
.
Scan
(
&
create
.
ID
,
);
err
!=
nil
{
return
nil
,
err
}
storage
:=
create
return
storage
,
nil
return
s
.
driver
.
CreateStorage
(
ctx
,
create
)
}
func
(
s
*
Store
)
ListStorages
(
ctx
context
.
Context
,
find
*
FindStorage
)
([]
*
Storage
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
any
{}
if
find
.
ID
!=
nil
{
where
,
args
=
append
(
where
,
"id = ?"
),
append
(
args
,
*
find
.
ID
)
}
rows
,
err
:=
s
.
db
.
QueryContext
(
ctx
,
`
SELECT
id,
name,
type,
config
FROM storage
WHERE `
+
strings
.
Join
(
where
,
" AND "
)
+
`
ORDER BY id DESC`
,
args
...
,
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
list
:=
[]
*
Storage
{}
for
rows
.
Next
()
{
storage
:=
&
Storage
{}
if
err
:=
rows
.
Scan
(
&
storage
.
ID
,
&
storage
.
Name
,
&
storage
.
Type
,
&
storage
.
Config
,
);
err
!=
nil
{
return
nil
,
err
}
list
=
append
(
list
,
storage
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
err
}
return
list
,
nil
return
s
.
driver
.
ListStorages
(
ctx
,
find
)
}
func
(
s
*
Store
)
GetStorage
(
ctx
context
.
Context
,
find
*
FindStorage
)
(
*
Storage
,
error
)
{
...
...
@@ -102,51 +46,9 @@ func (s *Store) GetStorage(ctx context.Context, find *FindStorage) (*Storage, er
}
func
(
s
*
Store
)
UpdateStorage
(
ctx
context
.
Context
,
update
*
UpdateStorage
)
(
*
Storage
,
error
)
{
set
,
args
:=
[]
string
{},
[]
any
{}
if
update
.
Name
!=
nil
{
set
=
append
(
set
,
"name = ?"
)
args
=
append
(
args
,
*
update
.
Name
)
}
if
update
.
Config
!=
nil
{
set
=
append
(
set
,
"config = ?"
)
args
=
append
(
args
,
*
update
.
Config
)
}
args
=
append
(
args
,
update
.
ID
)
stmt
:=
`
UPDATE storage
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
WHERE id = ?
RETURNING
id,
name,
type,
config
`
storage
:=
&
Storage
{}
if
err
:=
s
.
db
.
QueryRowContext
(
ctx
,
stmt
,
args
...
)
.
Scan
(
&
storage
.
ID
,
&
storage
.
Name
,
&
storage
.
Type
,
&
storage
.
Config
,
);
err
!=
nil
{
return
nil
,
err
}
return
storage
,
nil
return
s
.
driver
.
UpdateStorage
(
ctx
,
update
)
}
func
(
s
*
Store
)
DeleteStorage
(
ctx
context
.
Context
,
delete
*
DeleteStorage
)
error
{
stmt
:=
`
DELETE FROM storage
WHERE id = ?
`
result
,
err
:=
s
.
db
.
ExecContext
(
ctx
,
stmt
,
delete
.
ID
)
if
err
!=
nil
{
return
err
}
if
_
,
err
:=
result
.
RowsAffected
();
err
!=
nil
{
return
err
}
return
nil
return
s
.
driver
.
DeleteStorage
(
ctx
,
delete
)
}
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