discussion.go 1.6 KB
package domain

import (
	"context"
	"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction"
)

type Discussion struct {
	Id             int64   // 唯一标识
	Title          string  `json:"title"`          // 标题(不超过30个字符)
	Content        string  `json:"content"`        // 内容(不超过500个字符)
	Images         []Image `json:"images"`         // 图片(不超过5张)
	Widget         Widget  `json:"widget"`         // 小组件
	ProviderId     int64   `json:"providerId"`     // 发起者ID
	ParticipantIds []int64 `json:"participantIds"` // 参与者ID
	ArticleId      int64   `json:"articleId"`      // 文章ID
	State          int     `json:"state"`          // 状态(1进行中、2搁置、3中止、4结案)
	CreatedAt      int64   `json:",omitempty"`
	UpdatedAt      int64   `json:",omitempty"`
	DeletedAt      int64   `json:",omitempty"`
	Version        int     `json:",omitempty"`
}

type DiscussionRepository interface {
	Insert(ctx context.Context, conn transaction.Conn, dm *Discussion) (*Discussion, error)
	Update(ctx context.Context, conn transaction.Conn, dm *Discussion) (*Discussion, error)
	UpdateWithVersion(ctx context.Context, conn transaction.Conn, dm *Discussion) (*Discussion, error)
	Delete(ctx context.Context, conn transaction.Conn, dm *Discussion) (*Discussion, error)
	FindOne(ctx context.Context, conn transaction.Conn, id int64) (*Discussion, error)
	Find(ctx context.Context, conn transaction.Conn, queryOptions map[string]interface{}) (int64, []*Discussion, error)
}

func (m *Discussion) Identify() interface{} {
	if m.Id == 0 {
		return nil
	}
	return m.Id
}