model

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrKVSEntryValueTooLarge  = errors.New("value size is too large")
	ErrPrivateKVSETagMismatch = errors.New("private KVS etag mismatch")
)
View Source
var (
	ErrUserDeactivated = errors.New("user is deactivated")
)
View Source
var (
	ErrUserProfileTooLarge = errors.New("user profile is too large")
)

Functions

This section is empty.

Types

type Echo

type Echo struct {
	ID        uuid.UUID
	Message   string
	Timestamp time.Time
}

func NewEcho

func NewEcho(message string, timestamp time.Time) Echo

type GlobalKVSBucket

type GlobalKVSBucket struct {
	KVSBucket
}

GlobalKVSBucket は、全ユーザで共有される KVS を表します。 専用 API が提供されていないプロダクト固有の機能は、この機能で代用される想定です。

func NewGlobalKVSBucket

func NewGlobalKVSBucket(entries []KVSEntry) GlobalKVSBucket

type KVSBucket

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

KVSBucket は、KVS におけるエントリの配列操作を提供します。

func NewKVSBucket

func NewKVSBucket(entries []KVSEntry) KVSBucket

func (KVSBucket) HasKey

func (m KVSBucket) HasKey(key string) bool

func (KVSBucket) Raw

func (m KVSBucket) Raw() []KVSEntry

func (*KVSBucket) Set

func (m *KVSBucket) Set(entries ...KVSEntry)

type KVSCriteria

type KVSCriteria struct {
	ExactMatch  []string
	PrefixMatch []string
}

func NewKVSCriteria

func NewKVSCriteria(exactMatch, prefixMatch []string) KVSCriteria

func (KVSCriteria) IsEmpty

func (c KVSCriteria) IsEmpty() bool

type KVSEntry

type KVSEntry struct {
	Key   string
	Value []byte
}

KVSEntry は、KVS に読み書きされるデータの最小単位です。

func NewKVSEntry

func NewKVSEntry(key string, value []byte) (KVSEntry, error)

func (KVSEntry) IsEmpty

func (e KVSEntry) IsEmpty() bool

type PrivateKVSBucket

type PrivateKVSBucket struct {
	KVSBucket

	UserID uuid.UUID
	// contains filtered or unexported fields
}

PrivateKVSBucket はユーザごとに独立した KVS で、他ユーザには公開されません。

func NewPrivateKVSBucket

func NewPrivateKVSBucket(userID uuid.UUID, etag uuid.UUID, entries []KVSEntry) PrivateKVSBucket

func (PrivateKVSBucket) ETag

func (m PrivateKVSBucket) ETag() uuid.UUID

func (*PrivateKVSBucket) Set

func (m *PrivateKVSBucket) Set(etag uuid.UUID, entries []KVSEntry) error

type User

type User struct {
	ID     uuid.UUID
	Email  string
	Status UserStatus
}

func NewUser

func NewUser(id uuid.UUID, email string, status UserStatus) User

func (*User) Activate

func (u *User) Activate() error

type UserAuthentication

type UserAuthentication struct {
	UserID uuid.UUID
	// BaaS ごとにユーザIDの表現が異なるため、文字列型にしている。
	BaasUserID          string
	LastAuthenticatedAt time.Time
}

UserAuthentication はユーザの認証に必要な情報を提供します。 認証/再認証のみで利用され、セッション管理のコンテキストでは利用されません。

func NewUserAuthentication

func NewUserAuthentication(userID uuid.UUID, baasUserID string, lastAuthenticatedAt time.Time) UserAuthentication

func (*UserAuthentication) Refresh

func (a *UserAuthentication) Refresh(now time.Time)

type UserProfile

type UserProfile struct {
	UserID uuid.UUID
	// contains filtered or unexported fields
}

プロフィールのデータ構造はプロダクトによって異なり、汎化が難しい。 そのため、プロフィールをバイナリデータとして扱い、プロダクトごとに独自スキーマを定義させる。

func NewUserProfile

func NewUserProfile(userID uuid.UUID, v []byte) (UserProfile, error)

func (UserProfile) Bytes

func (p UserProfile) Bytes() []byte

type UserStatus

type UserStatus int
const (
	// 設定が未完了で、他ユーザからの操作を受け付けない状態。
	UserStatusPending UserStatus = 1 + iota
	// アカウントが利用可能な状態。
	UserStatusActive
	// アカウントが削除され、利用不可な状態。
	// この状態になると、二度と利用できなくなる。
	UserStatusDeactivated
)

Jump to

Keyboard shortcuts

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