all repos

onasty @ 4f5482b26e104ea821ac24519c6c9d19e0be15c9

a one-time notes service
4 files changed, 7 insertions(+), 9 deletions(-)
refactor: make NoteSlugDTO type as string alias (#19)

Author: Smirnov Oleksandr ss2316544@gmail.com
Committed by: GitHub noreply@github.com
Committed at: 2024-09-22 13:16:15 +0300
Parent: bcf5056
M internal/dtos/note.go
···
        6
        6
         	"github.com/gofrs/uuid/v5"

      
        7
        7
         )

      
        8
        8
         

      
        9
        
        -type NoteSlugDTO string

      
        10
        
        -

      
        11
        
        -func (n NoteSlugDTO) String() string { return string(n) }

      
        
        9
        +type NoteSlugDTO = string

      
        12
        10
         

      
        13
        11
         type NoteDTO struct {

      
        14
        12
         	Content              string

      
M internal/service/notesrv/notesrv.go
···
        44
        44
         	}

      
        45
        45
         

      
        46
        46
         	if !userID.IsNil() {

      
        47
        
        -		if err := n.noterepo.SetAuthorIDBySlug(ctx, dtos.NoteSlugDTO(inp.Slug), userID); err != nil {

      
        
        47
        +		if err := n.noterepo.SetAuthorIDBySlug(ctx, inp.Slug, userID); err != nil {

      
        48
        48
         			return "", err

      
        49
        49
         		}

      
        50
        50
         	}

      
        51
        51
         

      
        52
        
        -	return dtos.NoteSlugDTO(inp.Slug), nil

      
        
        52
        +	return inp.Slug, nil

      
        53
        53
         }

      
        54
        54
         

      
        55
        55
         func (n *NoteSrv) GetBySlugAndRemoveIfNeeded(

      ···
        79
        79
         

      
        80
        80
         	// TODO: in future not remove, leave some metadata

      
        81
        81
         	// to shot user that note was alreasy seen

      
        82
        
        -	return note, n.noterepo.DeleteBySlug(ctx, dtos.NoteSlugDTO(note.Slug))

      
        
        82
        +	return note, n.noterepo.DeleteBySlug(ctx, note.Slug)

      
        83
        83
         }

      
M internal/store/psql/noterepo/noterepo.go
···
        98
        98
         	defer tx.Rollback(ctx) //nolint:errcheck

      
        99
        99
         

      
        100
        100
         	var noteID uuid.UUID

      
        101
        
        -	err = tx.QueryRow(ctx, "select id from notes where slug = $1", slug.String()).Scan(&noteID)

      
        
        101
        +	err = tx.QueryRow(ctx, "select id from notes where slug = $1", slug).Scan(&noteID)

      
        102
        102
         	if err != nil {

      
        103
        103
         		if errors.Is(err, pgx.ErrNoRows) {

      
        104
        104
         			return models.ErrNoteNotFound

      
M internal/transport/http/apiv1/note.go
···
        53
        53
         		return

      
        54
        54
         	}

      
        55
        55
         

      
        56
        
        -	c.JSON(http.StatusCreated, createNoteResponse{slug.String()})

      
        
        56
        +	c.JSON(http.StatusCreated, createNoteResponse{slug})

      
        57
        57
         }

      
        58
        58
         

      
        59
        59
         type getNoteBySlugResponse struct {

      ···
        64
        64
         

      
        65
        65
         func (a *APIV1) getNoteBySlugHandler(c *gin.Context) {

      
        66
        66
         	slug := c.Param("slug")

      
        67
        
        -	note, err := a.notesrv.GetBySlugAndRemoveIfNeeded(c.Request.Context(), dtos.NoteSlugDTO(slug))

      
        
        67
        +	note, err := a.notesrv.GetBySlugAndRemoveIfNeeded(c.Request.Context(), slug)

      
        68
        68
         	if err != nil {

      
        69
        69
         		errorResponse(c, err)

      
        70
        70
         		return