chore: add shortcut.description field

This commit is contained in:
Steven 2022-09-14 07:43:54 +08:00
parent 48fb6018c0
commit 4c099e7699
5 changed files with 51 additions and 23 deletions

View File

@ -31,9 +31,10 @@ type Shortcut struct {
RowStatus RowStatus `json:"rowStatus"` RowStatus RowStatus `json:"rowStatus"`
// Domain specific fields // Domain specific fields
Name string `json:"name"` Name string `json:"name"`
Link string `json:"link"` Link string `json:"link"`
Visibility Visibility `json:"visibility"` Description string `json:"description"`
Visibility Visibility `json:"visibility"`
} }
type ShortcutCreate struct { type ShortcutCreate struct {
@ -42,9 +43,10 @@ type ShortcutCreate struct {
WorkspaceID int `json:"workspaceId"` WorkspaceID int `json:"workspaceId"`
// Domain specific fields // Domain specific fields
Name string `json:"name"` Name string `json:"name"`
Link string `json:"link"` Link string `json:"link"`
Visibility Visibility `json:"visibility"` Description string `json:"description"`
Visibility Visibility `json:"visibility"`
} }
type ShortcutPatch struct { type ShortcutPatch struct {
@ -54,9 +56,10 @@ type ShortcutPatch struct {
RowStatus *RowStatus `json:"rowStatus"` RowStatus *RowStatus `json:"rowStatus"`
// Domain specific fields // Domain specific fields
Name *string `json:"name"` Name *string `json:"name"`
Link *string `json:"link"` Link *string `json:"link"`
Visibility *Visibility `json:"visibility"` Description *string `json:"description"`
Visibility *Visibility `json:"visibility"`
} }
type ShortcutFind struct { type ShortcutFind struct {
@ -67,9 +70,10 @@ type ShortcutFind struct {
WorkspaceID *int `json:"workspaceId"` WorkspaceID *int `json:"workspaceId"`
// Domain specific fields // Domain specific fields
Name *string `json:"name"` Name *string `json:"name"`
Link *string `json:"link"` Link *string `json:"link"`
Visibility *Visibility `json:"visibility"` Description *string `json:"description"`
Visibility *Visibility `json:"visibility"`
} }
type ShortcutDelete struct { type ShortcutDelete struct {

View File

@ -115,6 +115,7 @@ CREATE TABLE shortcut (
workspace_id INTEGER NOT NULL, workspace_id INTEGER NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
link TEXT NOT NULL DEFAULT '', link TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
visibility TEXT NOT NULL CHECK (visibility IN ('PRIVATE', 'WORKSPACE')) DEFAULT 'PRIVATE', visibility TEXT NOT NULL CHECK (visibility IN ('PRIVATE', 'WORKSPACE')) DEFAULT 'PRIVATE',
FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE, FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE,
FOREIGN KEY(workspace_id) REFERENCES workspace(id) ON DELETE CASCADE FOREIGN KEY(workspace_id) REFERENCES workspace(id) ON DELETE CASCADE

View File

@ -55,7 +55,8 @@ CREATE TABLE user (
row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL', row_status TEXT NOT NULL CHECK (row_status IN ('NORMAL', 'ARCHIVED')) DEFAULT 'NORMAL',
email TEXT NOT NULL UNIQUE, email TEXT NOT NULL UNIQUE,
name TEXT NOT NULL, name TEXT NOT NULL,
password_hash TEXT NOT NULL password_hash TEXT NOT NULL,
open_id TEXT NOT NULL UNIQUE
); );
INSERT INTO INSERT INTO
@ -75,6 +76,12 @@ WHERE
rowid = old.rowid; rowid = old.rowid;
END; END;
CREATE INDEX user_id_index ON user(id);
CREATE UNIQUE INDEX user_email_index ON user(email);
CREATE UNIQUE INDEX user_open_id_index ON user(open_id);
-- user_setting -- user_setting
CREATE TABLE user_setting ( CREATE TABLE user_setting (
user_id INTEGER NOT NULL, user_id INTEGER NOT NULL,
@ -108,6 +115,7 @@ CREATE TABLE shortcut (
workspace_id INTEGER NOT NULL, workspace_id INTEGER NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
link TEXT NOT NULL DEFAULT '', link TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
visibility TEXT NOT NULL CHECK (visibility IN ('PRIVATE', 'WORKSPACE')) DEFAULT 'PRIVATE', visibility TEXT NOT NULL CHECK (visibility IN ('PRIVATE', 'WORKSPACE')) DEFAULT 'PRIVATE',
FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE, FOREIGN KEY(creator_id) REFERENCES user(id) ON DELETE CASCADE,
FOREIGN KEY(workspace_id) REFERENCES workspace(id) ON DELETE CASCADE FOREIGN KEY(workspace_id) REFERENCES workspace(id) ON DELETE CASCADE

View File

@ -4,6 +4,7 @@ INSERT INTO
`workspace_id`, `workspace_id`,
`name`, `name`,
`link`, `link`,
`description`,
`visibility` `visibility`
) )
VALUES VALUES
@ -12,5 +13,6 @@ VALUES
11, 11,
'baidu', 'baidu',
'https://baidu.com', 'https://baidu.com',
'百度搜索',
'WORKSPACE' 'WORKSPACE'
); );

View File

@ -23,9 +23,10 @@ type shortcutRaw struct {
RowStatus api.RowStatus RowStatus api.RowStatus
// Domain specific fields // Domain specific fields
Name string Name string
Link string Link string
Visibility api.Visibility Description string
Visibility api.Visibility
} }
func (raw *shortcutRaw) toShortcut() *api.Shortcut { func (raw *shortcutRaw) toShortcut() *api.Shortcut {
@ -38,9 +39,10 @@ func (raw *shortcutRaw) toShortcut() *api.Shortcut {
WorkspaceID: raw.WorkspaceID, WorkspaceID: raw.WorkspaceID,
RowStatus: raw.RowStatus, RowStatus: raw.RowStatus,
Name: raw.Name, Name: raw.Name,
Link: raw.Link, Link: raw.Link,
Visibility: raw.Visibility, Description: raw.Description,
Visibility: raw.Visibility,
} }
} }
@ -178,13 +180,14 @@ func createShortcut(ctx context.Context, tx *sql.Tx, create *api.ShortcutCreate)
workspace_id, workspace_id,
name, name,
link, link,
description,
visibility visibility
) )
VALUES (?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?)
RETURNING id, creator_id, created_ts, updated_ts, workspace_id, row_status, name, link, visibility RETURNING id, creator_id, created_ts, updated_ts, workspace_id, row_status, name, link, description, visibility
` `
var shortcutRaw shortcutRaw var shortcutRaw shortcutRaw
if err := tx.QueryRowContext(ctx, query, create.CreatorID, create.WorkspaceID, create.Name, create.Link, create.Visibility).Scan( if err := tx.QueryRowContext(ctx, query, create.CreatorID, create.WorkspaceID, create.Name, create.Link, create.Description, create.Visibility).Scan(
&shortcutRaw.ID, &shortcutRaw.ID,
&shortcutRaw.CreatorID, &shortcutRaw.CreatorID,
&shortcutRaw.CreatedTs, &shortcutRaw.CreatedTs,
@ -193,6 +196,7 @@ func createShortcut(ctx context.Context, tx *sql.Tx, create *api.ShortcutCreate)
&shortcutRaw.RowStatus, &shortcutRaw.RowStatus,
&shortcutRaw.Name, &shortcutRaw.Name,
&shortcutRaw.Link, &shortcutRaw.Link,
&shortcutRaw.Description,
&shortcutRaw.Visibility, &shortcutRaw.Visibility,
); err != nil { ); err != nil {
return nil, FormatError(err) return nil, FormatError(err)
@ -210,6 +214,9 @@ func patchShortcut(ctx context.Context, tx *sql.Tx, patch *api.ShortcutPatch) (*
if v := patch.Link; v != nil { if v := patch.Link; v != nil {
set, args = append(set, "link = ?"), append(args, *v) set, args = append(set, "link = ?"), append(args, *v)
} }
if v := patch.Description; v != nil {
set, args = append(set, "description = ?"), append(args, *v)
}
if v := patch.Visibility; v != nil { if v := patch.Visibility; v != nil {
set, args = append(set, "visibility = ?"), append(args, *v) set, args = append(set, "visibility = ?"), append(args, *v)
} }
@ -220,7 +227,7 @@ func patchShortcut(ctx context.Context, tx *sql.Tx, patch *api.ShortcutPatch) (*
UPDATE shortcut UPDATE shortcut
SET ` + strings.Join(set, ", ") + ` SET ` + strings.Join(set, ", ") + `
WHERE id = ? WHERE id = ?
RETURNING id, creator_id, created_ts, updated_ts, workspace_id, row_status, name, link, visibility RETURNING id, creator_id, created_ts, updated_ts, workspace_id, row_status, name, link, description, visibility
` `
var shortcutRaw shortcutRaw var shortcutRaw shortcutRaw
if err := tx.QueryRowContext(ctx, query, args...).Scan( if err := tx.QueryRowContext(ctx, query, args...).Scan(
@ -232,6 +239,7 @@ func patchShortcut(ctx context.Context, tx *sql.Tx, patch *api.ShortcutPatch) (*
&shortcutRaw.RowStatus, &shortcutRaw.RowStatus,
&shortcutRaw.Name, &shortcutRaw.Name,
&shortcutRaw.Link, &shortcutRaw.Link,
&shortcutRaw.Description,
&shortcutRaw.Visibility, &shortcutRaw.Visibility,
); err != nil { ); err != nil {
return nil, FormatError(err) return nil, FormatError(err)
@ -258,6 +266,9 @@ func findShortcutList(ctx context.Context, tx *sql.Tx, find *api.ShortcutFind) (
if v := find.Link; v != nil { if v := find.Link; v != nil {
where, args = append(where, "link = ?"), append(args, *v) where, args = append(where, "link = ?"), append(args, *v)
} }
if v := find.Description; v != nil {
where, args = append(where, "description = ?"), append(args, *v)
}
if v := find.Visibility; v != nil { if v := find.Visibility; v != nil {
where, args = append(where, "visibility = ?"), append(args, *v) where, args = append(where, "visibility = ?"), append(args, *v)
} }
@ -272,6 +283,7 @@ func findShortcutList(ctx context.Context, tx *sql.Tx, find *api.ShortcutFind) (
row_status, row_status,
name, name,
link, link,
description,
visibility visibility
FROM shortcut FROM shortcut
WHERE `+strings.Join(where, " AND ")+` WHERE `+strings.Join(where, " AND ")+`
@ -295,6 +307,7 @@ func findShortcutList(ctx context.Context, tx *sql.Tx, find *api.ShortcutFind) (
&shortcutRaw.RowStatus, &shortcutRaw.RowStatus,
&shortcutRaw.Name, &shortcutRaw.Name,
&shortcutRaw.Link, &shortcutRaw.Link,
&shortcutRaw.Description,
&shortcutRaw.Visibility, &shortcutRaw.Visibility,
); err != nil { ); err != nil {
return nil, FormatError(err) return nil, FormatError(err)