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
8e01eb87
Commit
8e01eb87
authored
May 21, 2022
by
boojack
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: `store/db` module with sqlite
parent
c34cbb19
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
228 additions
and
40 deletions
+228
-40
root.go
bin/server/cmd/root.go
+3
-2
go.mod
go.mod
+2
-2
db.go
store/db/db.go
+28
-1
10000__reset.sql
store/db/migration/10000__reset.sql
+0
-0
10001__schema.sql
store/db/migration/10001__schema.sql
+0
-0
migration_history.go
store/db/migration_history.go
+64
-0
10000__reset.sql
store/db/seed/10000__reset.sql
+0
-0
10001__user.sql
store/db/seed/10001__user.sql
+0
-0
10002__memo.sql
store/db/seed/10002__memo.sql
+0
-0
10003__memo_organizer.sql
store/db/seed/10003__memo_organizer.sql
+0
-0
10004__shortcut.sql
store/db/seed/10004__shortcut.sql
+0
-0
table.go
store/db/table.go
+65
-0
error.go
store/error.go
+19
-0
memo.go
store/memo.go
+9
-8
memo_organizer.go
store/memo_organizer.go
+5
-4
resource.go
store/resource.go
+7
-6
shortcut.go
store/shortcut.go
+9
-8
store.go
store/store.go
+10
-3
user.go
store/user.go
+7
-6
No files found.
bin/server/cmd/root.go
View file @
8e01eb87
...
@@ -7,6 +7,7 @@ import (
...
@@ -7,6 +7,7 @@ import (
"memos/common"
"memos/common"
"memos/server"
"memos/server"
"memos/store"
"memos/store"
DB
"memos/store/db"
)
)
const
(
const
(
...
@@ -25,14 +26,14 @@ type Main struct {
...
@@ -25,14 +26,14 @@ type Main struct {
}
}
func
(
m
*
Main
)
Run
()
error
{
func
(
m
*
Main
)
Run
()
error
{
db
:=
store
.
NewDB
(
m
.
profile
)
db
:=
DB
.
NewDB
(
m
.
profile
)
if
err
:=
db
.
Open
();
err
!=
nil
{
if
err
:=
db
.
Open
();
err
!=
nil
{
return
fmt
.
Errorf
(
"cannot open db: %w"
,
err
)
return
fmt
.
Errorf
(
"cannot open db: %w"
,
err
)
}
}
s
:=
server
.
NewServer
(
m
.
profile
)
s
:=
server
.
NewServer
(
m
.
profile
)
storeInstance
:=
store
.
New
(
db
)
storeInstance
:=
store
.
New
(
db
.
Db
,
m
.
profile
)
s
.
Store
=
storeInstance
s
.
Store
=
storeInstance
if
err
:=
s
.
Run
();
err
!=
nil
{
if
err
:=
s
.
Run
();
err
!=
nil
{
...
...
go.mod
View file @
8e01eb87
...
@@ -12,7 +12,7 @@ require (
...
@@ -12,7 +12,7 @@ require (
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.1 // indirect
github.com/valyala/fasttemplate v1.2.1 // indirect
golang.org/x/crypto v0.0.0-20210920023735-84f357641f63
// indirect
golang.org/x/crypto v0.0.0-20210920023735-84f357641f63
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf // indirect
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf // indirect
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/text v0.3.7 // indirect
...
@@ -26,7 +26,7 @@ require (
...
@@ -26,7 +26,7 @@ require (
)
)
require (
require (
github.com/gorilla/securecookie v1.1.1
// indirect
github.com/gorilla/securecookie v1.1.1
github.com/gorilla/sessions v1.2.1
github.com/gorilla/sessions v1.2.1
github.com/labstack/echo-contrib v0.12.0
github.com/labstack/echo-contrib v0.12.0
)
)
store/
sqlite
.go
→
store/
db/db
.go
View file @
8e01eb87
package
store
package
db
import
(
import
(
"database/sql"
"database/sql"
...
@@ -76,6 +76,33 @@ func (db *DB) Open() (err error) {
...
@@ -76,6 +76,33 @@ func (db *DB) Open() (err error) {
}
}
func
(
db
*
DB
)
migrate
()
error
{
func
(
db
*
DB
)
migrate
()
error
{
table
,
err
:=
findTable
(
db
,
"migration_history"
)
if
err
!=
nil
{
return
err
}
if
table
==
nil
{
createTable
(
db
,
`
CREATE TABLE migration_history (
version TEXT NOT NULL PRIMARY KEY,
created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now'))
);
`
)
}
migrationHistoryList
,
err
:=
findMigrationHistoyList
(
db
)
if
err
!=
nil
{
return
err
}
if
len
(
migrationHistoryList
)
==
0
{
createMigrationHistoy
(
db
,
common
.
Version
)
}
else
{
migrationHistory
:=
migrationHistoryList
[
0
]
if
migrationHistory
.
Version
!=
common
.
Version
{
createMigrationHistoy
(
db
,
common
.
Version
)
}
}
filenames
,
err
:=
fs
.
Glob
(
migrationFS
,
fmt
.
Sprintf
(
"%s/*.sql"
,
"migration"
))
filenames
,
err
:=
fs
.
Glob
(
migrationFS
,
fmt
.
Sprintf
(
"%s/*.sql"
,
"migration"
))
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
...
store/migration/10000__reset.sql
→
store/
db/
migration/10000__reset.sql
View file @
8e01eb87
File moved
store/migration/10001__schema.sql
→
store/
db/
migration/10001__schema.sql
View file @
8e01eb87
File moved
store/db/migration_history.go
0 → 100644
View file @
8e01eb87
package
db
import
(
"fmt"
"time"
)
type
MigrationHistory
struct
{
CreatedTs
int64
Version
string
}
func
findMigrationHistoyList
(
db
*
DB
)
([]
*
MigrationHistory
,
error
)
{
rows
,
err
:=
db
.
Db
.
Query
(
`
SELECT
version,
created_ts
FROM
migration_history
ORDER BY created_ts DESC
`
)
if
err
!=
nil
{
return
nil
,
err
}
defer
rows
.
Close
()
migrationHistoryList
:=
make
([]
*
MigrationHistory
,
0
)
for
rows
.
Next
()
{
var
migrationHistory
MigrationHistory
if
err
:=
rows
.
Scan
(
&
migrationHistory
.
Version
,
&
migrationHistory
.
CreatedTs
,
);
err
!=
nil
{
return
nil
,
err
}
migrationHistoryList
=
append
(
migrationHistoryList
,
&
migrationHistory
)
}
return
migrationHistoryList
,
nil
}
func
createMigrationHistoy
(
db
*
DB
,
version
string
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
`
INSERT INTO migration_history (
version,
created_ts
)
VALUES (?, ?)
`
,
version
,
time
.
Now
()
.
Unix
(),
)
if
err
!=
nil
{
return
err
}
rows
,
_
:=
result
.
RowsAffected
()
if
rows
==
0
{
return
fmt
.
Errorf
(
"failed to create migration history with %s"
,
version
)
}
return
nil
}
store/seed/10000__reset.sql
→
store/
db/
seed/10000__reset.sql
View file @
8e01eb87
File moved
store/seed/10001__user.sql
→
store/
db/
seed/10001__user.sql
View file @
8e01eb87
File moved
store/seed/10002__memo.sql
→
store/
db/
seed/10002__memo.sql
View file @
8e01eb87
File moved
store/seed/10003__memo_organizer.sql
→
store/
db/
seed/10003__memo_organizer.sql
View file @
8e01eb87
File moved
store/seed/10004__shortcut.sql
→
store/
db/
seed/10004__shortcut.sql
View file @
8e01eb87
File moved
store/db/table.go
0 → 100644
View file @
8e01eb87
package
db
import
(
"fmt"
"strings"
)
type
Table
struct
{
Name
string
SQL
string
}
func
findTable
(
db
*
DB
,
tableName
string
)
(
*
Table
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
where
,
args
=
append
(
where
,
"type = ?"
),
append
(
args
,
"table"
)
where
,
args
=
append
(
where
,
"name = ?"
),
append
(
args
,
tableName
)
rows
,
err
:=
db
.
Db
.
Query
(
`
SELECT
tbl_name,
sql
FROM sqlite_schema
WHERE `
+
strings
.
Join
(
where
,
" AND "
),
args
...
,
)
if
err
!=
nil
{
return
nil
,
FormatError
(
err
)
}
defer
rows
.
Close
()
tableList
:=
make
([]
*
Table
,
0
)
for
rows
.
Next
()
{
var
table
Table
if
err
:=
rows
.
Scan
(
&
table
.
Name
,
&
table
.
SQL
,
);
err
!=
nil
{
return
nil
,
FormatError
(
err
)
}
tableList
=
append
(
tableList
,
&
table
)
}
if
err
:=
rows
.
Err
();
err
!=
nil
{
return
nil
,
FormatError
(
err
)
}
if
len
(
tableList
)
==
0
{
return
nil
,
nil
}
else
{
return
tableList
[
0
],
nil
}
}
func
createTable
(
db
*
DB
,
sql
string
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
sql
)
rows
,
_
:=
result
.
RowsAffected
()
if
rows
==
0
{
return
fmt
.
Errorf
(
"failed to create table with %s"
,
sql
)
}
return
err
}
store/error.go
0 → 100644
View file @
8e01eb87
package
store
import
(
"database/sql"
"errors"
)
func
FormatError
(
err
error
)
error
{
if
err
==
nil
{
return
nil
}
switch
err
{
case
sql
.
ErrNoRows
:
return
errors
.
New
(
"data not found"
)
default
:
return
err
}
}
store/memo.go
View file @
8e01eb87
package
store
package
store
import
(
import
(
"database/sql"
"fmt"
"fmt"
"memos/api"
"memos/api"
"memos/common"
"memos/common"
...
@@ -113,7 +114,7 @@ func (s *Store) DeleteMemo(delete *api.MemoDelete) error {
...
@@ -113,7 +114,7 @@ func (s *Store) DeleteMemo(delete *api.MemoDelete) error {
return
nil
return
nil
}
}
func
createMemoRaw
(
db
*
DB
,
create
*
api
.
MemoCreate
)
(
*
memoRaw
,
error
)
{
func
createMemoRaw
(
db
*
sql
.
DB
,
create
*
api
.
MemoCreate
)
(
*
memoRaw
,
error
)
{
set
:=
[]
string
{
"creator_id"
,
"content"
}
set
:=
[]
string
{
"creator_id"
,
"content"
}
placeholder
:=
[]
string
{
"?"
,
"?"
}
placeholder
:=
[]
string
{
"?"
,
"?"
}
args
:=
[]
interface
{}{
create
.
CreatorID
,
create
.
Content
}
args
:=
[]
interface
{}{
create
.
CreatorID
,
create
.
Content
}
...
@@ -122,7 +123,7 @@ func createMemoRaw(db *DB, create *api.MemoCreate) (*memoRaw, error) {
...
@@ -122,7 +123,7 @@ func createMemoRaw(db *DB, create *api.MemoCreate) (*memoRaw, error) {
set
,
placeholder
,
args
=
append
(
set
,
"created_ts"
),
append
(
placeholder
,
"?"
),
append
(
args
,
*
v
)
set
,
placeholder
,
args
=
append
(
set
,
"created_ts"
),
append
(
placeholder
,
"?"
),
append
(
args
,
*
v
)
}
}
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO memo (
INSERT INTO memo (
`
+
strings
.
Join
(
set
,
", "
)
+
`
`
+
strings
.
Join
(
set
,
", "
)
+
`
)
)
...
@@ -152,7 +153,7 @@ func createMemoRaw(db *DB, create *api.MemoCreate) (*memoRaw, error) {
...
@@ -152,7 +153,7 @@ func createMemoRaw(db *DB, create *api.MemoCreate) (*memoRaw, error) {
return
&
memoRaw
,
nil
return
&
memoRaw
,
nil
}
}
func
patchMemoRaw
(
db
*
DB
,
patch
*
api
.
MemoPatch
)
(
*
memoRaw
,
error
)
{
func
patchMemoRaw
(
db
*
sql
.
DB
,
patch
*
api
.
MemoPatch
)
(
*
memoRaw
,
error
)
{
set
,
args
:=
[]
string
{},
[]
interface
{}{}
set
,
args
:=
[]
string
{},
[]
interface
{}{}
if
v
:=
patch
.
Content
;
v
!=
nil
{
if
v
:=
patch
.
Content
;
v
!=
nil
{
...
@@ -164,7 +165,7 @@ func patchMemoRaw(db *DB, patch *api.MemoPatch) (*memoRaw, error) {
...
@@ -164,7 +165,7 @@ func patchMemoRaw(db *DB, patch *api.MemoPatch) (*memoRaw, error) {
args
=
append
(
args
,
patch
.
ID
)
args
=
append
(
args
,
patch
.
ID
)
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
UPDATE memo
UPDATE memo
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
WHERE id = ?
WHERE id = ?
...
@@ -193,7 +194,7 @@ func patchMemoRaw(db *DB, patch *api.MemoPatch) (*memoRaw, error) {
...
@@ -193,7 +194,7 @@ func patchMemoRaw(db *DB, patch *api.MemoPatch) (*memoRaw, error) {
return
&
memoRaw
,
nil
return
&
memoRaw
,
nil
}
}
func
findMemoRawList
(
db
*
DB
,
find
*
api
.
MemoFind
)
([]
*
memoRaw
,
error
)
{
func
findMemoRawList
(
db
*
sql
.
DB
,
find
*
api
.
MemoFind
)
([]
*
memoRaw
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
if
v
:=
find
.
ID
;
v
!=
nil
{
if
v
:=
find
.
ID
;
v
!=
nil
{
...
@@ -209,7 +210,7 @@ func findMemoRawList(db *DB, find *api.MemoFind) ([]*memoRaw, error) {
...
@@ -209,7 +210,7 @@ func findMemoRawList(db *DB, find *api.MemoFind) ([]*memoRaw, error) {
where
=
append
(
where
,
"id in (SELECT memo_id FROM memo_organizer WHERE pinned = 1 AND user_id = memo.creator_id )"
)
where
=
append
(
where
,
"id in (SELECT memo_id FROM memo_organizer WHERE pinned = 1 AND user_id = memo.creator_id )"
)
}
}
rows
,
err
:=
db
.
Db
.
Query
(
`
rows
,
err
:=
db
.
Query
(
`
SELECT
SELECT
id,
id,
creator_id,
creator_id,
...
@@ -250,8 +251,8 @@ func findMemoRawList(db *DB, find *api.MemoFind) ([]*memoRaw, error) {
...
@@ -250,8 +251,8 @@ func findMemoRawList(db *DB, find *api.MemoFind) ([]*memoRaw, error) {
return
memoRawList
,
nil
return
memoRawList
,
nil
}
}
func
deleteMemo
(
db
*
DB
,
delete
*
api
.
MemoDelete
)
error
{
func
deleteMemo
(
db
*
sql
.
DB
,
delete
*
api
.
MemoDelete
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
`DELETE FROM memo WHERE id = ?`
,
delete
.
ID
)
result
,
err
:=
db
.
Exec
(
`DELETE FROM memo WHERE id = ?`
,
delete
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
FormatError
(
err
)
return
FormatError
(
err
)
}
}
...
...
store/memo_organizer.go
View file @
8e01eb87
package
store
package
store
import
(
import
(
"database/sql"
"fmt"
"fmt"
"memos/api"
"memos/api"
"memos/common"
"memos/common"
...
@@ -47,8 +48,8 @@ func (s *Store) UpsertMemoOrganizer(upsert *api.MemoOrganizerUpsert) error {
...
@@ -47,8 +48,8 @@ func (s *Store) UpsertMemoOrganizer(upsert *api.MemoOrganizerUpsert) error {
return
nil
return
nil
}
}
func
findMemoOrganizer
(
db
*
DB
,
find
*
api
.
MemoOrganizerFind
)
(
*
memoOrganizerRaw
,
error
)
{
func
findMemoOrganizer
(
db
*
sql
.
DB
,
find
*
api
.
MemoOrganizerFind
)
(
*
memoOrganizerRaw
,
error
)
{
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
SELECT
SELECT
id,
id,
memo_id,
memo_id,
...
@@ -79,8 +80,8 @@ func findMemoOrganizer(db *DB, find *api.MemoOrganizerFind) (*memoOrganizerRaw,
...
@@ -79,8 +80,8 @@ func findMemoOrganizer(db *DB, find *api.MemoOrganizerFind) (*memoOrganizerRaw,
return
&
memoOrganizerRaw
,
nil
return
&
memoOrganizerRaw
,
nil
}
}
func
upsertMemoOrganizer
(
db
*
DB
,
upsert
*
api
.
MemoOrganizerUpsert
)
error
{
func
upsertMemoOrganizer
(
db
*
sql
.
DB
,
upsert
*
api
.
MemoOrganizerUpsert
)
error
{
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO memo_organizer (
INSERT INTO memo_organizer (
memo_id,
memo_id,
user_id,
user_id,
...
...
store/resource.go
View file @
8e01eb87
package
store
package
store
import
(
import
(
"database/sql"
"fmt"
"fmt"
"memos/api"
"memos/api"
"memos/common"
"memos/common"
...
@@ -90,8 +91,8 @@ func (s *Store) DeleteResource(delete *api.ResourceDelete) error {
...
@@ -90,8 +91,8 @@ func (s *Store) DeleteResource(delete *api.ResourceDelete) error {
return
nil
return
nil
}
}
func
createResource
(
db
*
DB
,
create
*
api
.
ResourceCreate
)
(
*
resourceRaw
,
error
)
{
func
createResource
(
db
*
sql
.
DB
,
create
*
api
.
ResourceCreate
)
(
*
resourceRaw
,
error
)
{
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO resource (
INSERT INTO resource (
filename,
filename,
blob,
blob,
...
@@ -130,7 +131,7 @@ func createResource(db *DB, create *api.ResourceCreate) (*resourceRaw, error) {
...
@@ -130,7 +131,7 @@ func createResource(db *DB, create *api.ResourceCreate) (*resourceRaw, error) {
return
&
resourceRaw
,
nil
return
&
resourceRaw
,
nil
}
}
func
findResourceList
(
db
*
DB
,
find
*
api
.
ResourceFind
)
([]
*
resourceRaw
,
error
)
{
func
findResourceList
(
db
*
sql
.
DB
,
find
*
api
.
ResourceFind
)
([]
*
resourceRaw
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
if
v
:=
find
.
ID
;
v
!=
nil
{
if
v
:=
find
.
ID
;
v
!=
nil
{
...
@@ -143,7 +144,7 @@ func findResourceList(db *DB, find *api.ResourceFind) ([]*resourceRaw, error) {
...
@@ -143,7 +144,7 @@ func findResourceList(db *DB, find *api.ResourceFind) ([]*resourceRaw, error) {
where
,
args
=
append
(
where
,
"filename = ?"
),
append
(
args
,
*
v
)
where
,
args
=
append
(
where
,
"filename = ?"
),
append
(
args
,
*
v
)
}
}
rows
,
err
:=
db
.
Db
.
Query
(
`
rows
,
err
:=
db
.
Query
(
`
SELECT
SELECT
id,
id,
filename,
filename,
...
@@ -186,8 +187,8 @@ func findResourceList(db *DB, find *api.ResourceFind) ([]*resourceRaw, error) {
...
@@ -186,8 +187,8 @@ func findResourceList(db *DB, find *api.ResourceFind) ([]*resourceRaw, error) {
return
resourceRawList
,
nil
return
resourceRawList
,
nil
}
}
func
deleteResource
(
db
*
DB
,
delete
*
api
.
ResourceDelete
)
error
{
func
deleteResource
(
db
*
sql
.
DB
,
delete
*
api
.
ResourceDelete
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
`DELETE FROM resource WHERE id = ?`
,
delete
.
ID
)
result
,
err
:=
db
.
Exec
(
`DELETE FROM resource WHERE id = ?`
,
delete
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
FormatError
(
err
)
return
FormatError
(
err
)
}
}
...
...
store/shortcut.go
View file @
8e01eb87
package
store
package
store
import
(
import
(
"database/sql"
"fmt"
"fmt"
"memos/api"
"memos/api"
"memos/common"
"memos/common"
...
@@ -97,8 +98,8 @@ func (s *Store) DeleteShortcut(delete *api.ShortcutDelete) error {
...
@@ -97,8 +98,8 @@ func (s *Store) DeleteShortcut(delete *api.ShortcutDelete) error {
return
nil
return
nil
}
}
func
createShortcut
(
db
*
DB
,
create
*
api
.
ShortcutCreate
)
(
*
shortcutRaw
,
error
)
{
func
createShortcut
(
db
*
sql
.
DB
,
create
*
api
.
ShortcutCreate
)
(
*
shortcutRaw
,
error
)
{
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO shortcut (
INSERT INTO shortcut (
title,
title,
payload,
payload,
...
@@ -133,7 +134,7 @@ func createShortcut(db *DB, create *api.ShortcutCreate) (*shortcutRaw, error) {
...
@@ -133,7 +134,7 @@ func createShortcut(db *DB, create *api.ShortcutCreate) (*shortcutRaw, error) {
return
&
shortcutRaw
,
nil
return
&
shortcutRaw
,
nil
}
}
func
patchShortcut
(
db
*
DB
,
patch
*
api
.
ShortcutPatch
)
(
*
shortcutRaw
,
error
)
{
func
patchShortcut
(
db
*
sql
.
DB
,
patch
*
api
.
ShortcutPatch
)
(
*
shortcutRaw
,
error
)
{
set
,
args
:=
[]
string
{},
[]
interface
{}{}
set
,
args
:=
[]
string
{},
[]
interface
{}{}
if
v
:=
patch
.
Title
;
v
!=
nil
{
if
v
:=
patch
.
Title
;
v
!=
nil
{
...
@@ -148,7 +149,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*shortcutRaw, error) {
...
@@ -148,7 +149,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*shortcutRaw, error) {
args
=
append
(
args
,
patch
.
ID
)
args
=
append
(
args
,
patch
.
ID
)
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
UPDATE shortcut
UPDATE shortcut
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
WHERE id = ?
WHERE id = ?
...
@@ -178,7 +179,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*shortcutRaw, error) {
...
@@ -178,7 +179,7 @@ func patchShortcut(db *DB, patch *api.ShortcutPatch) (*shortcutRaw, error) {
return
&
shortcutRaw
,
nil
return
&
shortcutRaw
,
nil
}
}
func
findShortcutList
(
db
*
DB
,
find
*
api
.
ShortcutFind
)
([]
*
shortcutRaw
,
error
)
{
func
findShortcutList
(
db
*
sql
.
DB
,
find
*
api
.
ShortcutFind
)
([]
*
shortcutRaw
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
if
v
:=
find
.
ID
;
v
!=
nil
{
if
v
:=
find
.
ID
;
v
!=
nil
{
...
@@ -191,7 +192,7 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*shortcutRaw, error) {
...
@@ -191,7 +192,7 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*shortcutRaw, error) {
where
,
args
=
append
(
where
,
"title = ?"
),
append
(
args
,
*
v
)
where
,
args
=
append
(
where
,
"title = ?"
),
append
(
args
,
*
v
)
}
}
rows
,
err
:=
db
.
Db
.
Query
(
`
rows
,
err
:=
db
.
Query
(
`
SELECT
SELECT
id,
id,
title,
title,
...
@@ -234,8 +235,8 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*shortcutRaw, error) {
...
@@ -234,8 +235,8 @@ func findShortcutList(db *DB, find *api.ShortcutFind) ([]*shortcutRaw, error) {
return
shortcutRawList
,
nil
return
shortcutRawList
,
nil
}
}
func
deleteShortcut
(
db
*
DB
,
delete
*
api
.
ShortcutDelete
)
error
{
func
deleteShortcut
(
db
*
sql
.
DB
,
delete
*
api
.
ShortcutDelete
)
error
{
result
,
err
:=
db
.
Db
.
Exec
(
`DELETE FROM shortcut WHERE id = ?`
,
delete
.
ID
)
result
,
err
:=
db
.
Exec
(
`DELETE FROM shortcut WHERE id = ?`
,
delete
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
FormatError
(
err
)
return
FormatError
(
err
)
}
}
...
...
store/store.go
View file @
8e01eb87
package
store
package
store
import
(
"database/sql"
"memos/common"
)
// Store provides database access to all raw objects
// Store provides database access to all raw objects
type
Store
struct
{
type
Store
struct
{
db
*
DB
db
*
sql
.
DB
profile
*
common
.
Profile
}
}
// New creates a new instance of Store
// New creates a new instance of Store
func
New
(
db
*
DB
)
*
Store
{
func
New
(
db
*
sql
.
DB
,
profile
*
common
.
Profile
)
*
Store
{
return
&
Store
{
return
&
Store
{
db
:
db
,
db
:
db
,
profile
:
profile
,
}
}
}
}
store/user.go
View file @
8e01eb87
package
store
package
store
import
(
import
(
"database/sql"
"fmt"
"fmt"
"memos/api"
"memos/api"
"memos/common"
"memos/common"
...
@@ -94,8 +95,8 @@ func (s *Store) FindUser(find *api.UserFind) (*api.User, error) {
...
@@ -94,8 +95,8 @@ func (s *Store) FindUser(find *api.UserFind) (*api.User, error) {
return
user
,
nil
return
user
,
nil
}
}
func
createUser
(
db
*
DB
,
create
*
api
.
UserCreate
)
(
*
userRaw
,
error
)
{
func
createUser
(
db
*
sql
.
DB
,
create
*
api
.
UserCreate
)
(
*
userRaw
,
error
)
{
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
INSERT INTO user (
INSERT INTO user (
email,
email,
role,
role,
...
@@ -135,7 +136,7 @@ func createUser(db *DB, create *api.UserCreate) (*userRaw, error) {
...
@@ -135,7 +136,7 @@ func createUser(db *DB, create *api.UserCreate) (*userRaw, error) {
return
&
userRaw
,
nil
return
&
userRaw
,
nil
}
}
func
patchUser
(
db
*
DB
,
patch
*
api
.
UserPatch
)
(
*
userRaw
,
error
)
{
func
patchUser
(
db
*
sql
.
DB
,
patch
*
api
.
UserPatch
)
(
*
userRaw
,
error
)
{
set
,
args
:=
[]
string
{},
[]
interface
{}{}
set
,
args
:=
[]
string
{},
[]
interface
{}{}
if
v
:=
patch
.
RowStatus
;
v
!=
nil
{
if
v
:=
patch
.
RowStatus
;
v
!=
nil
{
...
@@ -156,7 +157,7 @@ func patchUser(db *DB, patch *api.UserPatch) (*userRaw, error) {
...
@@ -156,7 +157,7 @@ func patchUser(db *DB, patch *api.UserPatch) (*userRaw, error) {
args
=
append
(
args
,
patch
.
ID
)
args
=
append
(
args
,
patch
.
ID
)
row
,
err
:=
db
.
Db
.
Query
(
`
row
,
err
:=
db
.
Query
(
`
UPDATE user
UPDATE user
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
SET `
+
strings
.
Join
(
set
,
", "
)
+
`
WHERE id = ?
WHERE id = ?
...
@@ -188,7 +189,7 @@ func patchUser(db *DB, patch *api.UserPatch) (*userRaw, error) {
...
@@ -188,7 +189,7 @@ func patchUser(db *DB, patch *api.UserPatch) (*userRaw, error) {
return
nil
,
&
common
.
Error
{
Code
:
common
.
NotFound
,
Err
:
fmt
.
Errorf
(
"user ID not found: %d"
,
patch
.
ID
)}
return
nil
,
&
common
.
Error
{
Code
:
common
.
NotFound
,
Err
:
fmt
.
Errorf
(
"user ID not found: %d"
,
patch
.
ID
)}
}
}
func
findUserList
(
db
*
DB
,
find
*
api
.
UserFind
)
([]
*
userRaw
,
error
)
{
func
findUserList
(
db
*
sql
.
DB
,
find
*
api
.
UserFind
)
([]
*
userRaw
,
error
)
{
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
where
,
args
:=
[]
string
{
"1 = 1"
},
[]
interface
{}{}
if
v
:=
find
.
ID
;
v
!=
nil
{
if
v
:=
find
.
ID
;
v
!=
nil
{
...
@@ -207,7 +208,7 @@ func findUserList(db *DB, find *api.UserFind) ([]*userRaw, error) {
...
@@ -207,7 +208,7 @@ func findUserList(db *DB, find *api.UserFind) ([]*userRaw, error) {
where
,
args
=
append
(
where
,
"open_id = ?"
),
append
(
args
,
*
v
)
where
,
args
=
append
(
where
,
"open_id = ?"
),
append
(
args
,
*
v
)
}
}
rows
,
err
:=
db
.
Db
.
Query
(
`
rows
,
err
:=
db
.
Query
(
`
SELECT
SELECT
id,
id,
email,
email,
...
...
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