roi

package module
v0.0.0-...-e6c768a Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2020 License: BSD-3-Clause Imports: 16 Imported by: 0

README

roi

Build Status Go Report Card

roi는 2L의 새 파이프라인 서버이자, 첫번째 오픈소스 프로젝트입니다!

주의

roi는 아직 디자인이 끝나지 않았으며, 구현의 초기 단계입니다.

즉, 언제든 모든 것이 바뀔수 있습니다.

설치

roi는 go1.13 이상의 버전에서 컴파일 하는 것을 추천합니다.

아래에서는 ~/roi 를 레포지터리 루트로 하여 설치 및 실행하는 방법을 다룹니다.

cd ~
git clone https://github.com/studio2l/roi
cd ~/roi/cmd/roi
go build
DB

roi는 cockroach db 를 사용합니다.

cockroach db는 postgresql의 호환 문법을 사용하며, 쉽게 스케일을 키울수 있는 db입니다.

이 곳에서 최신 버전을 다운로드 받으실 수 있습니다.

다운로드 받은 후 원하는 곳에서 실행하시면 그 아래에 cockroach-data 디렉토리가 생성되며 실행됩니다.

cockroach db를 실행하려면 우선 db 인증서를 생성해야 합니다.

cd ~/roi/cmd/roi
./init-db

실행

roi를 실행하기전 먼저 DB를 실행해야 합니다.

cd ~/roi/cmd/roi
./start-db

이제 새 터미널에서 roi를 실행합니다. 아래 예제에서는 -insecure 플래그를 써 http 프로토콜로 프로그램을 실행하지만, 도메인이 있는 서버에서는 네트워크간 전송되는 정보를 보호할 수 있는 https 프로토콜을 사용하는 것이 좋습니다.

# 서버 실행
cd ~/roi/cmd/roi
sudo ./roi -insecure

이제 http://localhost 페이지를 살펴보세요.

자가서명인증서 (Self-Signed Certificate) 생성

https 프로토콜을 사용하고 싶으나, 비용 또는 여타 문제로 인증서 구매/발급이 어려울 때 자가서명인증서를 사용하는 경우가 있습니다.

이 때 제가 추천하는 프로그램은 mkcert 입니다.

mkcert는 여기서 받을수 있습니다.

cd ~/roi/cmd/roi/cert
mkcert -install
mkcert -cert-file=cert.pem -key-file=key.pem localhost
https 프로토콜 사용

-insecure 플래그를 제외하면 기본적으로 roi는 https 프로토콜을 사용합니다.

cd ~/roi/cmd/roi
sudo ./roi
환경변수

로이가 사용하는 환경변수는 다음과 같습니다.

ROI_ADDR: -addr 플래그를 지정하지 않았을때 서버가 바인딩하고, 클라이언트가 접근하는 주소입니다.
ROI_DB_ADDR: -db-addr 플래그를 지정하지 않았을때 서버가 사용하는 DB 주소입니다.
ROI_DB_HTTP_ADDR: start-db.sh가 사용하는 DB의 웹 서비스 주소입니다.

Documentation

Index

Constants

View Source
const (
	ShowWaiting        = ShowStatus("")
	ShowPreProduction  = ShowStatus("pre")
	ShowProduction     = ShowStatus("prod")
	ShowPostProduction = ShowStatus("post")
	ShowDone           = ShowStatus("done")
	ShowHold           = ShowStatus("hold")
)
View Source
const (
	StatusOmit       = Status("omit")
	StatusHold       = Status("hold")
	StatusInProgress = Status("in-progress")
	StatusNeedReview = Status("need-review")
	StatusRetake     = Status("retake")
	StatusApproved   = Status("approved")
	StatusDone       = Status("done")
)

각 항목들은 여기에 선언되어있는 상태중 일부만 사용한다.

Variables

View Source
var AllReviewStatus = []Status{
	StatusRetake,
	StatusApproved,
}
View Source
var CreateTableIfNotExistsGroupsStmt = `` /* 334-byte string literal not displayed */

CreateTableIfNotExistGroupsStmt는 DB에 groups 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var CreateTableIfNotExistsReviewsStmt = `` /* 657-byte string literal not displayed */

CreateTableIfNotExistReviewsStmt는 DB에 reviews 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var CreateTableIfNotExistsShowsStmt = `` /* 400-byte string literal not displayed */

CreateTableIfNotExistShowsStmt는 DB에 shows 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var CreateTableIfNotExistsSitesStmt = `` /* 386-byte string literal not displayed */
View Source
var CreateTableIfNotExistsTasksStmt = `` /* 673-byte string literal not displayed */

CreateTableIfNotExistShowsStmt는 DB에 tasks 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var CreateTableIfNotExistsUnitsStmt = `` /* 679-byte string literal not displayed */

CreateTableIfNotExistUnitsStmt는 DB에 units 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var CreateTableIfNotExistsUsersStmt = `` /* 396-byte string literal not displayed */
View Source
var CreateTableIfNotExistsVersionsStmt = `` /* 659-byte string literal not displayed */

CreateTableIfNotExistShowsStmt는 DB에 versions 테이블을 생성하는 sql 구문이다. 테이블은 타입보다 많은 정보를 담고 있을수도 있다.

View Source
var DefaultSite = &Site{
	Tasks: []string{
		"mod",
		"rig",
		"tex",
		"motion",
		"match",
		"ani",
		"fx",
		"lit",
		"matte",
		"comp",
	},
	DefaultShotTasks: []string{
		"comp",
	},
	DefaultAssetTasks: []string{
		"mod",
		"rig",
		"tex",
	},
}

DefaultSite는 기본적으로 제공되는 사이트이다.

Functions

func AddGroup

func AddGroup(db *sql.DB, s *Group) error

AddGroup은 db의 특정 프로젝트에 샷을 하나 추가한다.

func AddReview

func AddReview(db *sql.DB, r *Review) error

AddReview는 db의 특정 버전에 리뷰를 하나 추가한다.

func AddShow

func AddShow(db *sql.DB, s *Show) error

AddShow는 db에 쇼를 추가한다.

func AddSite

func AddSite(db *sql.DB) error

AddSite는 DB에 하나의 사이트를 생성한다. 현재는 하나의 사이트만 지원하기 때문에 db생성시 한번만 사용되어야 한다.

func AddTask

func AddTask(db *sql.DB, t *Task) error

AddTask는 db의 특정 쇼, 카테고리, 유닛에 태스크를 추가한다.

func AddThumbnail

func AddThumbnail(show, shot, thumbf string) error

AddThumbnail은 특정 샷의 썸네일을 등록한다. 썸네일은 roi안에 파일로 저장된다.

func AddUnit

func AddUnit(db *sql.DB, s *Unit) error

AddUnit은 db의 특정 프로젝트에 샷을 하나 추가한다.

func AddUser

func AddUser(db *sql.DB, id, pw string) error

AddUser는 db에 한 명의 사용자를 추가한다.

func AddVersion

func AddVersion(db *sql.DB, v *Version) error

AddVersion은 db의 특정 프로젝트, 특정 샷에 태스크를 추가한다.

func DB

func DB() (*sql.DB, error)

DB는 로이의 DB 핸들러를 반환한다. 이 함수는 이미 로이 DB와 DB 유저가 생성되어 있다고 가정한다.

func DeleteGroup

func DeleteGroup(db *sql.DB, show, grp string) error

DeleteGroup은 해당 그룹과 그 하위의 모든 데이터를 db에서 지운다. 만일 처리 중간에 에러가 나면 아무 데이터도 지우지 않고 에러를 반환한다.

func DeleteShow

func DeleteShow(db *sql.DB, show string) error

DeleteShow는 해당 쇼와 그 하위의 모든 데이터를 db에서 지운다. 만일 처리 중간에 에러가 나면 아무 데이터도 지우지 않고 에러를 반환한다.

func DeleteSite

func DeleteSite(db *sql.DB) error

func DeleteTask

func DeleteTask(db *sql.DB, show, grp, unit, task string) error

DeleteTask는 해당 태스크와 그 하위의 모든 데이터를 db에서 지운다. 만일 처리 중간에 에러가 나면 아무 데이터도 지우지 않고 에러를 반환한다.

func DeleteUnit

func DeleteUnit(db *sql.DB, show, grp, unit string) error

DeleteUnit은 해당 샷과 그 하위의 모든 데이터를 db에서 지운다. 만일 처리 중간에 에러가 나면 아무 데이터도 지우지 않고 에러를 반환한다.

func DeleteUser

func DeleteUser(db *sql.DB, id string) error

DeleteUser는 해당 id의 사용자를 지운다. 만일 해당 아이디의 사용자가 없다면 에러를 낸다.

func DeleteVersion

func DeleteVersion(db *sql.DB, show, grp, unit, task, ver string) error

DeleteVersion은 해당 버전과 그 하위의 모든 데이터를 db에서 지운다. 만일 처리 중간에 에러가 나면 아무 데이터도 지우지 않고 에러를 반환한다.

func InitDB

func InitDB(addr, ca, cert, key string) (*sql.DB, error)

InitDB는 로이 DB 및 DB유저를 생성한고 생성된 DB를 반환한다. 여러번 실행해도 문제되지 않는다. 실패하면 진행된 프로세스를 취소하고 에러를 반환한다.

func JoinGroupID

func JoinGroupID(show, grp string) string

func JoinTaskID

func JoinTaskID(show, grp, unit, task string) string

func JoinUnitID

func JoinUnitID(show, grp, unit string) string

func JoinVersionID

func JoinVersionID(show, grp, unit, task, ver string) string

func SiteMustNotHaveTask

func SiteMustNotHaveTask(db *sql.DB, task string) error

SiteMustNotHaveTask는 사이트 내의 샷에 해당 태스크가 하나라도 있으면 에러를 반환한다.

func SplitGroupID

func SplitGroupID(id string) (string, string, error)

SplitGroupID는 받아들인 샷 아이디를 쇼, 샷으로 분리해서 반환한다. 만일 샷 아이디가 유효하지 않다면 에러를 반환한다.

func SplitTaskID

func SplitTaskID(id string) (string, string, string, string, error)

SplitTaskID는 받아들인 샷 아이디를 쇼, 카테고리, 샷, 태스크로 분리해서 반환한다. 만일 샷 아이디가 유효하지 않다면 에러를 반환한다.

func SplitUnitID

func SplitUnitID(id string) (string, string, string, error)

SplitUnitID는 받아들인 샷 아이디를 쇼, 샷으로 분리해서 반환한다. 만일 샷 아이디가 유효하지 않다면 에러를 반환한다.

func SplitVersionID

func SplitVersionID(id string) (string, string, string, string, string, error)

SplitVersionID는 받아들인 버전 아이디를 쇼, 카테고리, 유닛, 태스크, 버전으로 분리해서 반환한다. 만일 버전 아이디가 유효하지 않다면 에러를 반환한다.

func UpdateGroup

func UpdateGroup(db *sql.DB, s *Group) error

UpdateGroup은 db에서 해당 샷을 수정한다.

func UpdateShow

func UpdateShow(db *sql.DB, s *Show) error

UpdateShow는 db의 쇼 정보를 수정한다.

func UpdateSite

func UpdateSite(db *sql.DB, s *Site) error

UpdateSite는 DB의 사이트 정보를 업데이트한다.

func UpdateTask

func UpdateTask(db *sql.DB, t *Task) error

UpdateTask는 db의 특정 태스크를 업데이트 한다.

func UpdateUnit

func UpdateUnit(db *sql.DB, s *Unit) error

UpdateUnit은 db에서 해당 샷을 수정한다.

func UpdateUser

func UpdateUser(db *sql.DB, id string, u *User) error

UpdateUser는 db에 비밀번호를 제외한 유저 필드를 업데이트 한다. 이 함수를 호출하기 전 해당 유저가 존재하는지를 사용자가 검사해야한다.

func UpdateUserConfig

func UpdateUserConfig(db *sql.DB, id string, u *UserConfig) error

UpdateUserConfig는 유저의 설정 값들을 업데이트 한다.

func UpdateUserPassword

func UpdateUserPassword(db *sql.DB, id, pw string) error

UpdateUserPassword는 db에 저장된 사용자 패스워드를 수정한다.

func UpdateVersion

func UpdateVersion(db *sql.DB, v *Version) error

UpdateVersion은 db의 특정 태스크를 업데이트 한다.

func UserPasswordMatch

func UserPasswordMatch(db *sql.DB, id, pw string) (bool, error)

UserPasswordMatch는 db에 저장된 사용자의 비밀번호와 입력된 비밀번호가 같은지를 비교한다. 해당 사용자가 없거나, 불러오는데 에러가 나면 false와 에러를 반환한다.

Types

type APIResponse

type APIResponse struct {
	Msg interface{} `json:"msg"`
	Err string      `json:"err"`
}

APIResponse는 /api/ 하위 사이트로 사용자가 질의했을 때 json 응답을 위해 사용한다.

type AuthError

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

AuthError는 특정 사용자가 허락되지 않은 행동을 요청했음을 의미하는 에러이다.

func Auth

func Auth(msg string, vals ...interface{}) AuthError

Auth는 AuthError를 반환한다.

func (AuthError) Error

func (e AuthError) Error() string

func (AuthError) Unwrap

func (e AuthError) Unwrap() error

type BadRequestError

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

BadRequestError는 로이의 함수를 호출했지만 그와 관련된 정보가 잘못되었음을 의미하는 에러이다.

func BadRequest

func BadRequest(msg string, vals ...interface{}) BadRequestError

BadRequest는 BadRequestError를 반환한다.

func (BadRequestError) Error

func (e BadRequestError) Error() string

func (BadRequestError) Unwrap

func (e BadRequestError) Unwrap() error

type DBStringMap

type DBStringMap map[string]string

DBStringMap은 db에 저장될 때 문자열로 변경되는 맵이다. 키와 값이 모두 문자열이다.

Value와 Scan 메소드의 리시버가 하나는 값, 하나는 포인터로 다른 것이 이상해 보이겠지만 이렇게 해야지만 정상 작동하였다.

func (*DBStringMap) Scan

func (m *DBStringMap) Scan(src interface{}) error

Scan은 db의 문자열 값을 맵으로 가져온다.

func (DBStringMap) Value

func (m DBStringMap) Value() (driver.Value, error)

Value는 db에 저장될 값이다.

type Group

type Group struct {
	Show  string `db:"show"`
	Group string `db:"grp"` // group이 sql 구문이기 때문에 줄여서 씀.

	DefaultTasks []string `db:"default_tasks"`

	Notes string `db:"notes"`

	// Attrs는 커스텀 속성으로 db에는 여러줄의 문자열로 저장된다. 각 줄은 키: 값의 쌍이다.
	Attrs DBStringMap `db:"attrs"`
}

func GetGroup

func GetGroup(db *sql.DB, show, grp string) (*Group, error)

GetGroup은 db에서 하나의 샷을 찾는다. 해당 샷이 존재하지 않는다면 nil과 NotFound 에러를 반환한다.

func ShowGroups

func ShowGroups(db *sql.DB, show string) ([]*Group, error)

func (*Group) ID

func (s *Group) ID() string

ID는 Group의 고유 아이디이다. 다른 어떤 항목도 같은 아이디를 가지지 않는다.

type NotFoundError

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

NotFoundError는 로이에서 특정 항목을 검색했지만 해당 항목이 없음을 의미하는 에러이다.

func NotFound

func NotFound(msg string, vals ...interface{}) NotFoundError

NotFound는 NotFoundError를 반환한다.

func (NotFoundError) Error

func (e NotFoundError) Error() string

func (NotFoundError) Unwrap

func (e NotFoundError) Unwrap() error

type Review

type Review struct {
	Show    string    `db:"show"`
	Group   string    `db:"grp"` // group이 sql 구문이기 때문에 줄여서 씀.
	Unit    string    `db:"unit"`
	Task    string    `db:"task"`
	Version string    `db:"version"`
	Created time.Time `db:"created"` // 작성 시간; 항목 생성시 자동으로 입력된다.

	Reviewer  string `db:"reviewer"`  // 리뷰 한 사람의 아이디
	Messenger string `db:"messenger"` // 메시지를 작성한 사람의 아이디
	Msg       string `db:"msg"`       // 리뷰 내용
	Status    Status `db:"status"`    // 이 상태로 변경되었음
}

Review는 버전의 상태를 변경하거나 수정을 위한 메시지를 남긴다.

func VersionReviews

func VersionReviews(db *sql.DB, show, grp, unit, task, ver string) ([]*Review, error)

VersionReviews는 해당 버전의 리뷰들을 반환한다.

type Show

type Show struct {
	// 쇼 아이디. 로이 내에서 고유해야 한다.
	Show string `db:"show"`

	Status string `db:"status"`

	Supervisor   string   `db:"supervisor"`
	CGSupervisor string   `db:"cg_supervisor"`
	PD           string   `db:"pd"`
	Managers     []string `db:"managers"`

	DueDate time.Time `db:"due_date"`
	Tags    []string  `db:"tags"`
	Notes   string    `db:"notes"`

	// Attrs는 커스텀 속성으로 db에는 여러줄의 문자열로 저장된다. 각 줄은 키: 값의 쌍이다.
	Attrs DBStringMap `db:"attrs"`
}

func AllShows

func AllShows(db *sql.DB) ([]*Show, error)

AllShows는 db에서 모든 쇼 정보를 가져온다. 검색 중 문제가 있으면 nil, error를 반환한다.

func GetShow

func GetShow(db *sql.DB, show string) (*Show, error)

GetShow는 db에서 하나의 쇼를 부른다. 해당 쇼가 없다면 nil과 NotFoundError를 반환한다.

func (*Show) ID

func (s *Show) ID() string

ID는 Show의 고유 아이디이다. 다른 어떤 항목도 같은 아이디를 가지지 않는다.

type ShowStatus

type ShowStatus string

func (ShowStatus) UIColor

func (s ShowStatus) UIColor() string

UIColor는 UI안에서 사용하는 색상이다.

func (ShowStatus) UIString

func (s ShowStatus) UIString() string

UIString은 UI안에서 사용하는 현지화된 문자열이다. 할일: 한국어 외의 문자열 지원

type Site

type Site struct {
	// 현재로서는 빈 이름의 하나의 사이트만 존재한다.
	// 추후 여러 사이트로 확장할것인지 고민중이다.
	Site            string   `db:"site"`
	VFXSupervisors  []string `db:"vfx_supervisors"`
	VFXProducers    []string `db:"vfx_producers"`
	CGSupervisors   []string `db:"cg_supervisors"`
	ProjectManagers []string `db:"project_managers"`
	// 샷에 생성할 수 있는 태스크
	Tasks []string `db:"tasks"`
	// 샷이 생성될 때 기본적으로 생기는 태스크
	DefaultShotTasks  []string `db:"default_shot_tasks"`
	DefaultAssetTasks []string `db:"default_asset_tasks"`
	// Leads는 task:name 형식이고 한 파트에 여러명이 등록될 수 있다.
	// 이 때 [... rnd:kybin rnd:kaycho ...] 처럼 등록한다.
	// 형식이 맞지 않거나 Tasks에 없는 태스크명을 쓰면 에러를 낸다.
	Leads []string `db:"leads"`
	Notes string   `db:"notes"`

	// Attrs는 커스텀 속성으로 db에는 여러줄의 문자열로 저장된다. 각 줄은 키: 값의 쌍이다.
	Attrs DBStringMap `db:"attrs"`
}

Site는 현재 스튜디오를 뜻한다.

func GetSite

func GetSite(db *sql.DB) (*Site, error)

GetSite는 db에서 사이트 정보를 가지고 온다. 사이트 정보가 존재하지 않으면 nil과 NotFound 에러를 반환한다.

type Status

type Status string

Status는 유닛 및 태스크의 상태이다.

func (Status) UIColor

func (s Status) UIColor() string

UIColor는 UI에서 각 상태를 뜻할 색상을 의미한다.

func (Status) UIString

func (s Status) UIString() string

UIStirng은 UI에서 각 상태를 뜻할 문자열을 의미한다.

type Task

type Task struct {
	// 관련 아이디
	Show  string `db:"show"`
	Group string `db:"grp"`  // group이 sql 구문이기 때문에 줄여서 씀.
	Unit  string `db:"unit"` // 샷 또는 애셋 유닛
	Task  string `db:"task"` // 파트 또는 파트_요소로 구성된다. 예) fx, fx_fire

	Status   Status    `db:"status"`
	DueDate  time.Time `db:"due_date"`
	Assignee string    `db:"assignee"`

	PublishVersion  string `db:"publish_version"`
	ApprovedVersion string `db:"approved_version"`
	ReviewVersion   string `db:"review_version"`
	WorkingVersion  string `db:"working_version"`
}

func GetTask

func GetTask(db *sql.DB, show, grp, unit, task string) (*Task, error)

GetTask는 db에서 하나의 태스크를 찾는다. 해당 태스크가 없다면 nil과 NotFound 에러를 반환한다.

func TasksNeedReview

func TasksNeedReview(db *sql.DB, show string) ([]*Task, error)

TasksNeedReview는 db에서 리뷰 대기중이거나 마감일이 있는 태스크를 불러온다.

func UnitTasks

func UnitTasks(db *sql.DB, show, grp, unit string) ([]*Task, error)

UnitTasks는 db의 특정 프로젝트 특정 샷의 태스크 전체를 반환한다.

func UserTasks

func UserTasks(db *sql.DB, user string) ([]*Task, error)

UserTasks는 해당 유저의 모든 태스크를 db에서 검색해 반환한다.

func (*Task) ID

func (t *Task) ID() string

ID는 Task의 고유 아이디이다. 다른 어떤 항목도 같은 아이디를 가지지 않는다.

func (*Task) UnitID

func (t *Task) UnitID() string

UnitID는 부모 유닛의 아이디를 반환한다. 유닛은 샷 또는 애셋이다.

type Unit

type Unit struct {
	Show  string `db:"show"`
	Group string `db:"grp"` // group이 sql 구문이기 때문에 줄여서 씀.
	Unit  string `db:"unit"`

	// 샷 정보
	Status        Status   `db:"status"`
	EditOrder     int      `db:"edit_order"`
	Description   string   `db:"description"`
	CGDescription string   `db:"cg_description"`
	Tags          []string `db:"tags"`

	// Assets는 샷이 필요로 하는 애셋 이름 리스트이다.
	// 현재는 애셋이 같은 쇼 안에 존재할 때만 처리가 가능하다.
	// 여기에 등록된 애셋은 존재해야만 하며,
	// 애셋이 삭제되기 전 우선 모든 샷의 애셋 태그에서 지워져야 한다.
	Assets []string `db:"assets"`

	// Tasks는 샷에 작업중인 어떤 태스크가 있는지를 나타낸다.
	// 웹 페이지에는 여기에 포함된 태스크만 이 순서대로 보여져야 한다.
	//
	// 참고: 여기에 포함되어 있다면 db내에 해당 태스크가 존재해야 한다.
	// 반대로 여기에 포함되어 있지 않지만 db내에는 존재하는 태스크가 있을 수 있다.
	// 그 태스크는 (예를 들어 태스크가 Omit 되는 등의 이유로) 숨겨진 태스크이며,
	// 직접 지우지 않는 한 db에 보관된다.
	Tasks []string `db:"tasks"`

	StartDate time.Time `db:"start_date"`
	EndDate   time.Time `db:"end_date"`
	DueDate   time.Time `db:"due_date"`

	// Attrs는 커스텀 속성으로 db에는 여러줄의 문자열로 저장된다. 각 줄은 키: 값의 쌍이다.
	Attrs DBStringMap `db:"attrs"`
}

func GetUnit

func GetUnit(db *sql.DB, show, grp, unit string) (*Unit, error)

GetUnit은 db에서 하나의 샷을 찾는다. 해당 샷이 존재하지 않는다면 nil과 NotFound 에러를 반환한다.

func SearchUnits

func SearchUnits(db *sql.DB, show string, grps, units []string, tag, status, task, assignee, task_status string, task_due_date time.Time) ([]*Unit, error)

SearchUnits는 db의 특정 프로젝트에서 검색 조건에 맞는 샷 리스트를 반환한다.

func (*Unit) ID

func (s *Unit) ID() string

ID는 Unit의 고유 아이디이다. 다른 어떤 항목도 같은 아이디를 가지지 않는다.

type User

type User struct {
	ID          string `db:"id"`
	KorName     string `db:"kor_name"`
	Name        string `db:"name"`
	Team        string `db:"team"`
	Role        string `db:"role"`
	Email       string `db:"email"`
	PhoneNumber string `db:"phone_number"`
	EntryDate   string `db:"entry_date"`
}

User는 일반적인 사용자 정보이다.

func GetUser

func GetUser(db *sql.DB, id string) (*User, error)

GetUser는 db에서 사용자를 검색한다. 해당 유저를 찾지 못하면 nil과 NotFound 에러를 반환한다.

func Users

func Users(db *sql.DB) ([]*User, error)

type UserConfig

type UserConfig struct {
	CurrentShow string `db:"current_show"`
}

func GetUserConfig

func GetUserConfig(db *sql.DB, id string) (*UserConfig, error)

UpdateUserConfig는 유저의 설정 값들을 받아온다.

type Version

type Version struct {
	Show    string `db:"show"`
	Group   string `db:"grp"` // group이 sql 구문이기 때문에 줄여서 씀.
	Unit    string `db:"unit"`
	Task    string `db:"task"`
	Version string `db:"version"` // 버전명

	Owner       string   `db:"owner"`        // 버전 소유자
	OutputFiles []string `db:"output_files"` // 결과물 경로
	Images      []string `db:"images"`       // 결과물을 확인할 수 있는 이미지
	Mov         string   `db:"mov"`          // 결과물을 영상으로 볼 수 있는 경로
	WorkFile    string   `db:"work_file"`    // 이 결과물을 만든 작업 파일
}

Version은 특정 태스크의 하나의 버전이다.

func GetVersion

func GetVersion(db *sql.DB, show, grp, unit, task, ver string) (*Version, error)

GetVersion은 db에서 하나의 버전을 찾는다. 해당 버전이 없다면 nil과 NotFound 에러를 반환한다.

func TaskVersions

func TaskVersions(db *sql.DB, show, grp, unit, task string) ([]*Version, error)

TaskVersions는 db에서 특정 태스크의 버전 전체를 검색해 반환한다.

func (*Version) ID

func (v *Version) ID() string

ID는 Version의 고유 아이디이다. 다른 어떤 항목도 같은 아이디를 가지지 않는다.

func (*Version) TaskID

func (v *Version) TaskID() string

TaskID는 부모 태스크의 아이디를 반환한다.

func (*Version) UnitID

func (v *Version) UnitID() string

UnitID는 부모 유닛의 아이디를 반환한다.

Directories

Path Synopsis
cmd
roi

Jump to

Keyboard shortcuts

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