opinion

package
v0.0.0-...-aaa2f95 Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2025 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidStatus = errors.New("invalid status")
)
View Source
var SeedUserID = shared.UUID[user.User](uuid.MustParse("00000000-0000-0000-0000-000000000001"))

Functions

func ReasonStrings

func ReasonStrings() []string

ReasonStrings returns a slice of all String values of the enum

Types

type Opinion

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

func NewOpinion

func NewOpinion(
	opinionID shared.UUID[Opinion],
	talkSessionID shared.UUID[talksession.TalkSession],
	userID shared.UUID[user.User],
	parentOpinionID *shared.UUID[Opinion],
	title *string,
	content string,
	createdAt time.Time,
	referenceURL *string,
) (*Opinion, error)

func (*Opinion) ChangeReferenceImageURL

func (o *Opinion) ChangeReferenceImageURL(url *string)

func (*Opinion) Content

func (o *Opinion) Content() string

func (*Opinion) Count

func (o *Opinion) Count() int

func (*Opinion) CreatedAt

func (o *Opinion) CreatedAt() time.Time

func (*Opinion) OpinionID

func (o *Opinion) OpinionID() shared.UUID[Opinion]

func (*Opinion) Opinions

func (o *Opinion) Opinions() []Opinion

func (*Opinion) ParentOpinionID

func (o *Opinion) ParentOpinionID() *shared.UUID[Opinion]

func (*Opinion) ReferenceImageURL

func (o *Opinion) ReferenceImageURL() *string

func (*Opinion) ReferenceURL

func (o *Opinion) ReferenceURL() *string

func (*Opinion) Reply

func (o *Opinion) Reply(opinion Opinion)

func (*Opinion) Report

func (o *Opinion) Report(ctx context.Context, reporterID shared.UUID[user.User], reason int, reasonText *string) (*Report, error)

func (*Opinion) SetSeed

func (o *Opinion) SetSeed()

func (*Opinion) TalkSessionID

func (o *Opinion) TalkSessionID() shared.UUID[talksession.TalkSession]

func (*Opinion) Title

func (o *Opinion) Title() *string

func (*Opinion) UserID

func (o *Opinion) UserID() shared.UUID[user.User]

type OpinionRepository

type OpinionRepository interface {
	Create(context.Context, Opinion) error
	FindByID(context.Context, shared.UUID[Opinion]) (*Opinion, error)
	FindByParentID(context.Context, shared.UUID[Opinion]) ([]Opinion, error)
	// FindByTalkSessionWithoutVote まだユーザーが投票していない意見をランダムに取得
	FindByTalkSessionWithoutVote(
		ctx context.Context,
		userID shared.UUID[user.User],
		talkSessionID shared.UUID[talksession.TalkSession],
		limit int,
	) ([]Opinion, error)
}

type OpinionService

type OpinionService interface {
	// すでに自分が意見に投票OR返信しているかどうかを判定
	IsVoted(ctx context.Context, opinionID shared.UUID[Opinion], userID shared.UUID[user.User]) (bool, error)
}

type Reason

type Reason int32
const (
	// 不適切な内容
	ReasonInappropriate Reason = iota + 1
	// セッションとは関係のない発言
	ReasonIrrelevant
	// スパム
	ReasonSpam
	// プライバシー
	ReasonPrivacy
	// その他
	ReasonOther = 255
)

func ReasonString

func ReasonString(s string) (Reason, error)

ReasonString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.

func ReasonValues

func ReasonValues() []Reason

ReasonValues returns all values of the enum

func (Reason) IsAReason

func (i Reason) IsAReason() bool

IsAReason returns "true" if the value is listed in the enum definition. "false" otherwise

func (Reason) String

func (i Reason) String() string

func (Reason) StringJP

func (r Reason) StringJP() string

StringJP

type Report

type Report struct {
	OpinionReportID shared.UUID[Report]
	OpinionID       shared.UUID[Opinion]
	TalkSessionID   shared.UUID[talksession.TalkSession]
	ReporterID      shared.UUID[user.User]
	Reason          Reason
	ReasonText      *string
	Status          Status
	CreatedAt       time.Time
}

func NewReport

func NewReport(
	opinionReportID shared.UUID[Report],
	opinionID shared.UUID[Opinion],
	talkSessionID shared.UUID[talksession.TalkSession],
	reporterID shared.UUID[user.User],
	reason int,
	reasonText *string,
	status string,
	createdAt time.Time,
) (*Report, error)

type ReportRepository

type ReportRepository interface {
	Create(context.Context, Report) error
	UpdateStatus(context.Context, shared.UUID[Report], Status) error
	FindByOpinionID(context.Context, shared.UUID[Opinion]) ([]Report, error)
	CountByTalkSessionIDAndStatus(context.Context, shared.UUID[talksession.TalkSession], Status) (int, error)
}

type Status

type Status string
const (
	// StatusUnsolved 未解決
	StatusUnsolved Status = "unsolved"
	// StatusDeleted 削除済み
	StatusDeleted Status = "deleted"
	// StatusHold 保留
	StatusHold Status = "hold"
)

func NewStatus

func NewStatus(status string) (Status, error)

Jump to

Keyboard shortcuts

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