mirror of
				https://github.com/usememos/memos.git
				synced 2025-10-26 22:36:16 +08:00 
			
		
		
		
	chore: upgrade version 0.13.0 (#1685)
				
					
				
			* chore: upgrade version `0.13.0` * chore: update
This commit is contained in:
		
							parent
							
								
									d80aa67c97
								
							
						
					
					
						commit
						1d7627dd72
					
				
					 11 changed files with 81 additions and 62 deletions
				
			
		
							
								
								
									
										7
									
								
								.github/workflows/build-artifacts.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/build-artifacts.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -1,12 +1,13 @@ | |||
| name: Memos Build | ||||
| name: build-artifacts | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|       # Run on pushing branches like `release/1.0.0` | ||||
|       - "release/*.*.*" | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
|   build-artifacts: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       matrix: | ||||
|  |  | |||
|  | @ -1,8 +1,6 @@ | |||
| package api | ||||
| 
 | ||||
| type MemoOrganizer struct { | ||||
| 	ID int | ||||
| 
 | ||||
| 	// Domain specific fields | ||||
| 	MemoID int | ||||
| 	UserID int | ||||
|  |  | |||
|  | @ -102,15 +102,13 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		if s.Profile.IsDev() { | ||||
| 			for _, memoRelationUpsert := range memoCreate.RelationList { | ||||
| 				if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ | ||||
| 					MemoID:        memo.ID, | ||||
| 					RelatedMemoID: memoRelationUpsert.RelatedMemoID, | ||||
| 					Type:          store.MemoRelationType(memoRelationUpsert.Type), | ||||
| 				}); err != nil { | ||||
| 					return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo relation").SetInternal(err) | ||||
| 				} | ||||
| 		for _, memoRelationUpsert := range memoCreate.RelationList { | ||||
| 			if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ | ||||
| 				MemoID:        memo.ID, | ||||
| 				RelatedMemoID: memoRelationUpsert.RelatedMemoID, | ||||
| 				Type:          store.MemoRelationType(memoRelationUpsert.Type), | ||||
| 			}); err != nil { | ||||
| 				return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo relation").SetInternal(err) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  | @ -187,34 +185,32 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		if s.Profile.IsDev() { | ||||
| 			patchMemoRelationList := make([]*api.MemoRelation, 0) | ||||
| 			for _, memoRelationUpsert := range memoPatch.RelationList { | ||||
| 				patchMemoRelationList = append(patchMemoRelationList, &api.MemoRelation{ | ||||
| 					MemoID:        memo.ID, | ||||
| 					RelatedMemoID: memoRelationUpsert.RelatedMemoID, | ||||
| 					Type:          memoRelationUpsert.Type, | ||||
| 				}) | ||||
| 		patchMemoRelationList := make([]*api.MemoRelation, 0) | ||||
| 		for _, memoRelationUpsert := range memoPatch.RelationList { | ||||
| 			patchMemoRelationList = append(patchMemoRelationList, &api.MemoRelation{ | ||||
| 				MemoID:        memo.ID, | ||||
| 				RelatedMemoID: memoRelationUpsert.RelatedMemoID, | ||||
| 				Type:          memoRelationUpsert.Type, | ||||
| 			}) | ||||
| 		} | ||||
| 		addedMemoRelationList, removedMemoRelationList := getMemoRelationListDiff(memo.RelationList, patchMemoRelationList) | ||||
| 		for _, memoRelation := range addedMemoRelationList { | ||||
| 			if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ | ||||
| 				MemoID:        memo.ID, | ||||
| 				RelatedMemoID: memoRelation.RelatedMemoID, | ||||
| 				Type:          store.MemoRelationType(memoRelation.Type), | ||||
| 			}); err != nil { | ||||
| 				return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo relation").SetInternal(err) | ||||
| 			} | ||||
| 			addedMemoRelationList, removedMemoRelationList := getMemoRelationListDiff(memo.RelationList, patchMemoRelationList) | ||||
| 			for _, memoRelation := range addedMemoRelationList { | ||||
| 				if _, err := s.Store.UpsertMemoRelation(ctx, &store.MemoRelationMessage{ | ||||
| 					MemoID:        memo.ID, | ||||
| 					RelatedMemoID: memoRelation.RelatedMemoID, | ||||
| 					Type:          store.MemoRelationType(memoRelation.Type), | ||||
| 				}); err != nil { | ||||
| 					return echo.NewHTTPError(http.StatusInternalServerError, "Failed to upsert memo relation").SetInternal(err) | ||||
| 				} | ||||
| 			} | ||||
| 			for _, memoRelation := range removedMemoRelationList { | ||||
| 				memoRelationType := store.MemoRelationType(memoRelation.Type) | ||||
| 				if err := s.Store.DeleteMemoRelation(ctx, &store.DeleteMemoRelationMessage{ | ||||
| 					MemoID:        &memo.ID, | ||||
| 					RelatedMemoID: &memoRelation.RelatedMemoID, | ||||
| 					Type:          &memoRelationType, | ||||
| 				}); err != nil { | ||||
| 					return echo.NewHTTPError(http.StatusInternalServerError, "Failed to delete memo relation").SetInternal(err) | ||||
| 				} | ||||
| 		} | ||||
| 		for _, memoRelation := range removedMemoRelationList { | ||||
| 			memoRelationType := store.MemoRelationType(memoRelation.Type) | ||||
| 			if err := s.Store.DeleteMemoRelation(ctx, &store.DeleteMemoRelationMessage{ | ||||
| 				MemoID:        &memo.ID, | ||||
| 				RelatedMemoID: &memoRelation.RelatedMemoID, | ||||
| 				Type:          &memoRelationType, | ||||
| 			}); err != nil { | ||||
| 				return echo.NewHTTPError(http.StatusInternalServerError, "Failed to delete memo relation").SetInternal(err) | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,10 +9,10 @@ import ( | |||
| 
 | ||||
| // Version is the service current released version. | ||||
| // Semantic versioning: https://semver.org/ | ||||
| var Version = "0.12.2" | ||||
| var Version = "0.13.0" | ||||
| 
 | ||||
| // DevVersion is the service current development version. | ||||
| var DevVersion = "0.12.2" | ||||
| var DevVersion = "0.13.0" | ||||
| 
 | ||||
| func GetCurrentVersion(mode string) string { | ||||
| 	if mode == "dev" || mode == "demo" { | ||||
|  |  | |||
|  | @ -48,7 +48,6 @@ CREATE TABLE memo ( | |||
| 
 | ||||
| -- memo_organizer | ||||
| CREATE TABLE memo_organizer ( | ||||
|   id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|   memo_id INTEGER NOT NULL, | ||||
|   user_id INTEGER NOT NULL, | ||||
|   pinned INTEGER NOT NULL CHECK (pinned IN (0, 1)) DEFAULT 0, | ||||
|  |  | |||
							
								
								
									
										7
									
								
								store/db/migration/prod/0.13/00__memo_relation.sql
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								store/db/migration/prod/0.13/00__memo_relation.sql
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| -- memo_relation | ||||
| CREATE TABLE memo_relation ( | ||||
|   memo_id INTEGER NOT NULL, | ||||
|   related_memo_id INTEGER NOT NULL, | ||||
|   type TEXT NOT NULL, | ||||
|   UNIQUE(memo_id, related_memo_id, type) | ||||
| ); | ||||
|  | @ -0,0 +1,22 @@ | |||
| DROP TABLE IF EXISTS memo_organizer_temp; | ||||
| 
 | ||||
| CREATE TABLE memo_organizer_temp ( | ||||
|   memo_id INTEGER NOT NULL, | ||||
|   user_id INTEGER NOT NULL, | ||||
|   pinned INTEGER NOT NULL CHECK (pinned IN (0, 1)) DEFAULT 0, | ||||
|   UNIQUE(memo_id, user_id) | ||||
| ); | ||||
| 
 | ||||
| INSERT INTO | ||||
|   memo_organizer_temp (memo_id, user_id, pinned) | ||||
| SELECT | ||||
|   memo_id, | ||||
|   user_id, | ||||
|   pinned | ||||
| FROM | ||||
|   memo_organizer; | ||||
| 
 | ||||
| DROP TABLE memo_organizer; | ||||
| 
 | ||||
| ALTER TABLE | ||||
|   memo_organizer_temp RENAME TO memo_organizer; | ||||
|  | @ -48,7 +48,6 @@ CREATE TABLE memo ( | |||
| 
 | ||||
| -- memo_organizer | ||||
| CREATE TABLE memo_organizer ( | ||||
|   id INTEGER PRIMARY KEY AUTOINCREMENT, | ||||
|   memo_id INTEGER NOT NULL, | ||||
|   user_id INTEGER NOT NULL, | ||||
|   pinned INTEGER NOT NULL CHECK (pinned IN (0, 1)) DEFAULT 0, | ||||
|  | @ -124,3 +123,11 @@ CREATE TABLE idp ( | |||
|   identifier_filter TEXT NOT NULL DEFAULT '', | ||||
|   config TEXT NOT NULL DEFAULT '{}' | ||||
| ); | ||||
| 
 | ||||
| -- memo_relation | ||||
| CREATE TABLE memo_relation ( | ||||
|   memo_id INTEGER NOT NULL, | ||||
|   related_memo_id INTEGER NOT NULL, | ||||
|   type TEXT NOT NULL, | ||||
|   UNIQUE(memo_id, related_memo_id, type) | ||||
| ); | ||||
|  | @ -55,10 +55,8 @@ func (s *Store) ComposeMemo(ctx context.Context, memo *api.Memo) (*api.Memo, err | |||
| 	if err := s.ComposeMemoResourceList(ctx, memo); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	if s.Profile.IsDev() { | ||||
| 		if err := s.ComposeMemoRelationList(ctx, memo); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 	if err := s.ComposeMemoRelationList(ctx, memo); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	return memo, nil | ||||
|  |  | |||
|  | @ -13,8 +13,6 @@ import ( | |||
| // memoOrganizerRaw is the store model for an MemoOrganizer. | ||||
| // Fields have exactly the same meanings as MemoOrganizer. | ||||
| type memoOrganizerRaw struct { | ||||
| 	ID int | ||||
| 
 | ||||
| 	// Domain specific fields | ||||
| 	MemoID int | ||||
| 	UserID int | ||||
|  | @ -23,8 +21,6 @@ type memoOrganizerRaw struct { | |||
| 
 | ||||
| func (raw *memoOrganizerRaw) toMemoOrganizer() *api.MemoOrganizer { | ||||
| 	return &api.MemoOrganizer{ | ||||
| 		ID: raw.ID, | ||||
| 
 | ||||
| 		MemoID: raw.MemoID, | ||||
| 		UserID: raw.UserID, | ||||
| 		Pinned: raw.Pinned, | ||||
|  | @ -87,7 +83,6 @@ func (s *Store) DeleteMemoOrganizer(ctx context.Context, delete *api.MemoOrganiz | |||
| func findMemoOrganizer(ctx context.Context, tx *sql.Tx, find *api.MemoOrganizerFind) (*memoOrganizerRaw, error) { | ||||
| 	query := ` | ||||
| 		SELECT | ||||
| 			id, | ||||
| 			memo_id, | ||||
| 			user_id, | ||||
| 			pinned | ||||
|  | @ -106,7 +101,6 @@ func findMemoOrganizer(ctx context.Context, tx *sql.Tx, find *api.MemoOrganizerF | |||
| 
 | ||||
| 	var memoOrganizerRaw memoOrganizerRaw | ||||
| 	if err := row.Scan( | ||||
| 		&memoOrganizerRaw.ID, | ||||
| 		&memoOrganizerRaw.MemoID, | ||||
| 		&memoOrganizerRaw.UserID, | ||||
| 		&memoOrganizerRaw.Pinned, | ||||
|  | @ -132,11 +126,10 @@ func upsertMemoOrganizer(ctx context.Context, tx *sql.Tx, upsert *api.MemoOrgani | |||
| 		ON CONFLICT(memo_id, user_id) DO UPDATE  | ||||
| 		SET | ||||
| 			pinned = EXCLUDED.pinned | ||||
| 		RETURNING id, memo_id, user_id, pinned | ||||
| 		RETURNING memo_id, user_id, pinned | ||||
| 	` | ||||
| 	var memoOrganizer api.MemoOrganizer | ||||
| 	if err := tx.QueryRowContext(ctx, query, upsert.MemoID, upsert.UserID, upsert.Pinned).Scan( | ||||
| 		&memoOrganizer.ID, | ||||
| 		&memoOrganizer.MemoID, | ||||
| 		&memoOrganizer.UserID, | ||||
| 		&memoOrganizer.Pinned, | ||||
|  |  | |||
|  | @ -51,7 +51,7 @@ func (s *Store) Vacuum(ctx context.Context) error { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (s *Store) vacuumImpl(ctx context.Context, tx *sql.Tx) error { | ||||
| func (*Store) vacuumImpl(ctx context.Context, tx *sql.Tx) error { | ||||
| 	if err := vacuumMemo(ctx, tx); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | @ -70,10 +70,8 @@ func (s *Store) vacuumImpl(ctx context.Context, tx *sql.Tx) error { | |||
| 	if err := vacuumMemoResource(ctx, tx); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if s.Profile.IsDev() { | ||||
| 		if err := vacuumMemoRelations(ctx, tx); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	if err := vacuumMemoRelations(ctx, tx); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if err := vacuumTag(ctx, tx); err != nil { | ||||
| 		// Prevent revive warning. | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue