diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index c6753e62..a3997cff 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -24,63 +24,63 @@ jobs: CGO_ENABLED: 1 steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - - name: Clone Memos - run: git clone https://github.com/usememos/memos.git + - name: Clone Memos + run: git clone https://github.com/usememos/memos.git - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: '18.12.1' + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: "18" - - name: Build frontend (Windows) - if: matrix.os == 'windows-latest' - shell: pwsh - run: | - cd memos/web - npm install -g pnpm - pnpm i --frozen-lockfile - pnpm build - Remove-Item -Path ../server/dist -Recurse -Force - mv dist ../server/ + - name: Build frontend (Windows) + if: matrix.os == 'windows-latest' + shell: pwsh + run: | + cd memos/web + npm install -g pnpm + pnpm i --frozen-lockfile + pnpm build + Remove-Item -Path ../server/dist -Recurse -Force + mv dist ../server/ - - name: Build frontend (non-Windows) - if: matrix.os != 'windows-latest' - run: | - cd memos/web - npm install -g pnpm - pnpm i --frozen-lockfile - pnpm build - rm -rf ../server/dist - mv dist ../server/ + - name: Build frontend (non-Windows) + if: matrix.os != 'windows-latest' + run: | + cd memos/web + npm install -g pnpm + pnpm i --frozen-lockfile + pnpm build + rm -rf ../server/dist + mv dist ../server/ - - name: Setup Go - uses: actions/setup-go@v2 - with: - go-version: '1.19.3' + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.19 - - name: Install mingw-w64 (Windows) - if: matrix.os == 'windows-latest' - run: | - choco install mingw - echo ${{ matrix.cgo_env }} >> $GITHUB_ENV + - name: Install mingw-w64 (Windows) + if: matrix.os == 'windows-latest' + run: | + choco install mingw + echo ${{ matrix.cgo_env }} >> $GITHUB_ENV - - name: Install gcc-aarch64-linux-gnu (Ubuntu ARM64) - if: matrix.os == 'ubuntu-latest' && matrix.goarch == 'arm64' - run: | - sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu - echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV + - name: Install gcc-aarch64-linux-gnu (Ubuntu ARM64) + if: matrix.os == 'ubuntu-latest' && matrix.goarch == 'arm64' + run: | + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu + echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV - - name: Build backend - run: | - cd memos - go build -o memos-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.os == 'windows-latest' && '.exe' || '' }} ./main.go + - name: Build backend + run: | + cd memos + go build -o memos-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.os == 'windows-latest' && '.exe' || '' }} ./main.go - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: memos-binary-${{ matrix.os }}-${{ matrix.goarch }} - path: memos/memos-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.os == 'windows-latest' && '.exe' || '' }} + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: memos-binary-${{ matrix.os }}-${{ matrix.goarch }} + path: memos/memos-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.os == 'windows-latest' && '.exe' || '' }} diff --git a/api/memo.go b/api/memo.go index 3cbb528b..29a73def 100644 --- a/api/memo.go +++ b/api/memo.go @@ -57,8 +57,8 @@ type MemoCreate struct { Content string `json:"content"` // Related fields - ResourceIDList []int `json:"resourceIdList"` - MemoRelationList []*MemoRelationUpsert `json:"memoRelationList"` + ResourceIDList []int `json:"resourceIdList"` + RelationList []*MemoRelationUpsert `json:"relationList"` } type MemoPatch struct { @@ -74,8 +74,8 @@ type MemoPatch struct { Visibility *Visibility `json:"visibility"` // Related fields - ResourceIDList []int `json:"resourceIdList"` - MemoRelationList []*MemoRelationUpsert `json:"memoRelationList"` + ResourceIDList []int `json:"resourceIdList"` + RelationList []*MemoRelationUpsert `json:"relationList"` } type MemoFind struct { diff --git a/api/memo_relation.go b/api/memo_relation.go index 8e5df41d..9e8c022b 100644 --- a/api/memo_relation.go +++ b/api/memo_relation.go @@ -8,12 +8,12 @@ const ( ) type MemoRelation struct { - MemoID int - RelatedMemoID int - Type MemoRelationType + MemoID int `json:"memoId"` + RelatedMemoID int `json:"relatedMemoId"` + Type MemoRelationType `json:"type"` } type MemoRelationUpsert struct { - RelatedMemoID int - Type MemoRelationType + RelatedMemoID int `json:"relatedMemoId"` + Type MemoRelationType `json:"type"` } diff --git a/server/memo.go b/server/memo.go index fae1a843..ec0dc19e 100644 --- a/server/memo.go +++ b/server/memo.go @@ -103,7 +103,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } if s.Profile.IsDev() { - for _, memoRelationUpsert := range memoCreate.MemoRelationList { + for _, memoRelationUpsert := range memoCreate.RelationList { if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ MemoID: memo.ID, RelatedMemoID: memoRelationUpsert.RelatedMemoID, @@ -171,7 +171,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { } if s.Profile.IsDev() { - for _, memoRelationUpsert := range memoPatch.MemoRelationList { + for _, memoRelationUpsert := range memoPatch.RelationList { if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ MemoID: memo.ID, RelatedMemoID: memoRelationUpsert.RelatedMemoID, diff --git a/test/server/memo_relation_test.go b/test/server/memo_relation_test.go index fac2bb0d..6ec5a0f1 100644 --- a/test/server/memo_relation_test.go +++ b/test/server/memo_relation_test.go @@ -35,7 +35,7 @@ func TestMemoRelationServer(t *testing.T) { require.Equal(t, "test memo", memo.Content) memo2, err := s.postMemoCreate(&api.MemoCreate{ Content: "test memo2", - MemoRelationList: []*api.MemoRelationUpsert{ + RelationList: []*api.MemoRelationUpsert{ { RelatedMemoID: memo.ID, Type: api.MemoRelationReference, diff --git a/web/src/components/MemoEditor/index.tsx b/web/src/components/MemoEditor/index.tsx index 5a087e5f..58eddf2e 100644 --- a/web/src/components/MemoEditor/index.tsx +++ b/web/src/components/MemoEditor/index.tsx @@ -240,6 +240,7 @@ const MemoEditor = () => { content, visibility: editorState.memoVisibility, resourceIdList: editorState.resourceList.map((resource) => resource.id), + relationList: [], }); filterStore.clearFilter(); } diff --git a/web/src/types/modules/memo.d.ts b/web/src/types/modules/memo.d.ts index df93b767..6af5fe6d 100644 --- a/web/src/types/modules/memo.d.ts +++ b/web/src/types/modules/memo.d.ts @@ -16,11 +16,13 @@ interface Memo { creatorName: string; resourceList: Resource[]; + relationList: MemoRelation[]; } interface MemoCreate { content: string; resourceIdList: ResourceId[]; + relationList: MemoRelationUpsert[]; visibility?: Visibility; } @@ -30,6 +32,7 @@ interface MemoPatch { rowStatus?: RowStatus; content?: string; resourceIdList?: ResourceId[]; + relationList?: MemoRelationUpsert[]; visibility?: Visibility; } diff --git a/web/src/types/modules/memoRelation.d.ts b/web/src/types/modules/memoRelation.d.ts new file mode 100644 index 00000000..040c7c28 --- /dev/null +++ b/web/src/types/modules/memoRelation.d.ts @@ -0,0 +1,12 @@ +type MemoRelationType = "REFERENCE" | "ADDITIONAL"; + +interface MemoRelation { + memoId: MemoId; + relatedMemoId: MemoId; + type: MemoRelationType; +} + +interface MemoRelationUpsert { + relatedMemoId: MemoId; + type: MemoRelationType; +}