comment

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2017 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package comment contains all the required operations to manage comments done in the work items.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Comment

type Comment struct {
	gormsupport.Lifecycle
	ID        uuid.UUID `sql:"type:uuid default uuid_generate_v4()" gorm:"primary_key"` // This is the ID PK field
	ParentID  string
	CreatedBy uuid.UUID `sql:"type:uuid"` // Belongs To Identity
	Body      string
	Markup    string
}

Comment describes a single comment

func (Comment) GetETagData

func (m Comment) GetETagData() []interface{}

GetETagData returns the field values to use to generate the ETag

func (Comment) GetLastModified

func (m Comment) GetLastModified() time.Time

GetLastModified returns the last modification time

type GormCommentRepository

type GormCommentRepository struct {
	// contains filtered or unexported fields
}

GormCommentRepository is the implementation of the storage interface for Comments.

func (*GormCommentRepository) Count

func (m *GormCommentRepository) Count(ctx context.Context, parent string) (int, error)

Count all comments related to a single item

func (*GormCommentRepository) Create

func (m *GormCommentRepository) Create(ctx context.Context, comment *Comment, creatorID uuid.UUID) error

Create creates a new record.

func (*GormCommentRepository) Delete

func (m *GormCommentRepository) Delete(ctx context.Context, commentID uuid.UUID, suppressorID uuid.UUID) error

Delete a single comment

func (*GormCommentRepository) List

func (m *GormCommentRepository) List(ctx context.Context, parent string, start *int, limit *int) ([]Comment, uint64, error)

List all comments related to a single item

func (*GormCommentRepository) Load

Load a single comment regardless of parent

func (*GormCommentRepository) Save

func (m *GormCommentRepository) Save(ctx context.Context, comment *Comment, modifierID uuid.UUID) error

Save a single comment

func (*GormCommentRepository) TableName

func (m *GormCommentRepository) TableName() string

TableName overrides the table name settings in Gorm to force a specific table name in the database.

type GormCommentRevisionRepository

type GormCommentRevisionRepository struct {
	// contains filtered or unexported fields
}

GormCommentRevisionRepository implements CommentRevisionRepository using gorm

func NewRevisionRepository

func NewRevisionRepository(db *gorm.DB) *GormCommentRevisionRepository

NewRevisionRepository creates a GormCommentRevisionRepository

func (*GormCommentRevisionRepository) Create

func (r *GormCommentRevisionRepository) Create(ctx context.Context, modifierID uuid.UUID, revisionType RevisionType, c Comment) error

Create stores a new revision for the given comment.

func (*GormCommentRevisionRepository) List

func (r *GormCommentRevisionRepository) List(ctx context.Context, commentID uuid.UUID) ([]Revision, error)

List retrieves all revisions for a given comment

type Repository

type Repository interface {
	Create(ctx context.Context, comment *Comment, creator uuid.UUID) error
	Save(ctx context.Context, comment *Comment, modifier uuid.UUID) error
	Delete(ctx context.Context, commentID uuid.UUID, suppressor uuid.UUID) error
	List(ctx context.Context, parent string, start *int, limit *int) ([]Comment, uint64, error)
	Load(ctx context.Context, id uuid.UUID) (*Comment, error)
	Count(ctx context.Context, parent string) (int, error)
}

Repository describes interactions with comments

func NewRepository

func NewRepository(db *gorm.DB) Repository

NewRepository creates a new storage type.

type Revision

type Revision struct {
	ID uuid.UUID `gorm:"primary_key"`
	// the timestamp of the modification
	Time time.Time `gorm:"column:revision_time"`
	// the type of modification
	Type RevisionType `gorm:"column:revision_type"`
	// the identity of author of the comment modification
	ModifierIdentity uuid.UUID `sql:"type:uuid" gorm:"column:modifier_id"`
	// the id of the comment that changed
	CommentID uuid.UUID `gorm:"column:comment_id"`
	// the id of the parent of the comment that changed
	CommentParentID string `gorm:"column:comment_parent_id"`
	// the body of the comment (nil when comment was deleted)
	CommentBody *string `gorm:"column:comment_body"`
	// the markup used to input the comment body (nil when comment was deleted)
	CommentMarkup *string `gorm:"column:comment_markup"`
}

Revision represents a version of a comment

func (Revision) TableName

func (w Revision) TableName() string

TableName implements gorm.tabler

type RevisionRepository

type RevisionRepository interface {
	// Create stores a new revision for the given comment.
	Create(ctx context.Context, modifierID uuid.UUID, revisionType RevisionType, comment Comment) error
	// List retrieves all revisions for a given comment
	List(ctx context.Context, workitemID uuid.UUID) ([]Revision, error)
}

RevisionRepository encapsulates storage & retrieval of historical versions of comments

type RevisionType

type RevisionType int

RevisionType defines the type of revision for a comment

const (

	// RevisionTypeCreate a comment creation
	RevisionTypeCreate RevisionType // 1
	// RevisionTypeDelete a comment deletion
	RevisionTypeDelete // 2

	// RevisionTypeUpdate a comment update
	RevisionTypeUpdate // 4
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL