srdblib

package module
v2.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2024 License: MIT Imports: 15 Imported by: 12

README

※ システム全体の構成要素と各要素の整合性のとれるバージョンについてはSRCGI - READMEの末尾にあります

srdblib

SHOWROOM関連のプログラムは共通のデータベースを使用しています。

https://github.com/Chouette2100/SRDB

このデータベースにアクセスするための関数を集めたライブラリです。 現時点ではまだ各プログラムにデータベースにアクセスするための関数が存在しており、今集約を進めているところです。


このライブラリーを使用している(あるいは使用する予定の)プログラムは以下のものです。

https://github.com/Chouette2100/SRGSE5M

https://github.com/Chouette2100/SRCGI

https://github.com/Chouette2100/SRGPC

https://github.com/Chouette2100/SRUEUI

https://github.com/Chouette2100/SRUUI

Documentation

Overview

Copyright © 2024 chouette2100@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2023 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com
Released under the MIT license
https://opensource.org/licenses/mit-license.php

Copyright © 2024 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2023 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

! Copyright © 2022 chouette.21.00@gmail.com Released under the MIT license https://opensource.org/licenses/mit-license.php

Index

Constants

View Source
const Version = "01AT00"

Variables

View Source
var Colorlist0 []Color = []Color{
	{"#00FFFF", "#00FFFF"},
	{"#FF00FF", "#FF00FF"},
	{"#FFFF00", "#FFFF00"},

	{"#7F7FFF", "#7F7FFF"},
	{"#FF7F7F", "#FF7F7F"},
	{"#7FFF7F", "#7FFF7F"},

	{"#7FBFFF", "#7FBFFF"},
	{"#FF7FBF", "#FF7FBF"},
	{"#BFFF7F", "#BFFF7F"},

	{"#7FFFFF", "#7FFFFF"},
	{"#FF7FFF", "#FF7FFF"},
	{"#FFFF7F", "#FFFF7F"},

	{"#7FFFBF", "#7FFFBF"},
	{"#BF7FFF", "#BF7FFF"},
	{"#FFBF7F", "#FFBF7F"},

	{"#ADADFF", "#ADADFF"},
	{"#FFADAD", "#FFADAD"},
	{"#ADFFAD", "#7FFFAD"},

	{"#ADD6FF", "#ADD6FF"},
	{"#FFADD6", "#FFADD6"},
	{"#D6FFAD", "#D6FFAD"},

	{"#ADFFFF", "#ADFFFF"},
	{"#FFADFF", "#FFADFF"},
	{"#FFFFAD", "#FFFFAD"},

	{"#ADFFD6", "#ADFFD6"},
	{"#D6ADFF", "#D6ADFF"},
	{"#FFD6AD", "#FFD6AD"},
}
View Source
var Colorlist1 []Color = []Color{
	{"cyan", "cyan"},
	{"magenta", "magenta"},
	{"yellow", "yellow"},
	{"royalblue", "royalblue"},
	{"coral", "coral"},
	{"khaki", "khaki"},
	{"deepskyblue", "deepskyblue"},
	{"crimson", "crimson"},
	{"orange", "orange"},
	{"lightsteelblue", "lightsteelblue"},
	{"pink", "pink"},
	{"sienna", "sienna"},
	{"springgreen", "springgreen"},
	{"blueviolet", "blueviolet"},
	{"salmon", "salmon"},
	{"lime", "lime"},
	{"red", "red"},
	{"darkorange", "darkorange"},
	{"skyblue", "skyblue"},
	{"lightpink", "lightpink"},
}
View Source
var Colorlist2 []Color = []Color{
	{"red", "#FF2800"},
	{"yellow", "#FAF500"},
	{"green", "#35A16B"},
	{"blue", "#0041FF"},
	{"skyblue", "#66CCFF"},
	{"lightpink", "#FFD1D1"},
	{"orange", "#FF9900"},
	{"purple", "#9A0079"},
	{"brown", "#663300"},
	{"lightgreen", "#87D7B0"},
	{"white", "#FFFFFF"},
	{"gray", "#77878F"},
}

https://www.fukushihoken.metro.tokyo.lg.jp/kiban/machizukuri/kanren/color.files/colorudguideline.pdf

View Source
var Db *sql.DB //  プログラム中では一貫してこの変数を使うこと
View Source
var Dberr error //  プログラム中では一貫してこの変数を使うこと
View Source
var Dbmap *gorp.DbMap
View Source
var Dialer sshql.Dialer
View Source
var Event_inf exsrapi.Event_Inf
View Source
var SortByFollowers bool

Functions

func ConverGenre2Abbr added in v1.1.0

func ConverGenre2Abbr(
	genre string,
) (
	abbr string,
)

日本語名のジャンルを英語名に変換する

v1.1.1 ジャンルの省略名は使わないようにする

func GetEventsRankingByApi added in v1.3.0

func GetEventsRankingByApi(
	client *http.Client,
	eid string,
	mode int,
) (
	pranking *srapi.Eventranking,
	err error,
)

func GetFeaturedEvents

func GetFeaturedEvents(
	hours int,
	num int,
	lmct int,
) (
	eventmap map[string]int,
)

func InserIntoGiftScore added in v1.3.0

func InserIntoGiftScore(
	client *http.Client,
	dbmap *gorp.DbMap,
	giftid int,
	cgr *srapi.GrRanking,
	tnow time.Time,
) (
	err error,
)

ギフトランキングデータを格納する 必要に応じて配信者(user)の情報を新たに作る、あるいは更新する。

func InserIntoGiftScoreCntrb added in v1.4.0

func InserIntoGiftScoreCntrb(
	client *http.Client,
	dbmap *gorp.DbMap,
	giftid int,
	userno int,
	grc *srapi.GrcRanking,
	tnow time.Time,
) (
	err error,
)

ギフトランキング・リスナー貢献ランキングデータを格納する 必要に応じてリスナー(viewer)の情報を新たに作る、あるいは更新する。

func InserIntoViewerGiftScore added in v1.3.0

func InserIntoViewerGiftScore(
	client *http.Client,
	dbmap *gorp.DbMap,
	giftid int,
	cugr *srapi.UgrRanking,
	tnow time.Time,
) (
	err error,
)

リスナーギフトランキングデータを格納する 必要に応じてリスナー(viewer)の情報を新たに作る、あるいは更新する。

func InsertEventinflistToEvent

func InsertEventinflistToEvent(
	tevent string,
	eventinflist *[]exsrapi.Event_Inf,
	bcheck bool,
) (
	err error,
)

イベント情報リストをイベントテーブルに格納する。 格納できたときは (*eventinflist)[i].Valid = false とする。 格納できないときは (*eventinflist)[i].Valid = true とする。 (*eventinflist)[i].Valid はイベント情報とは無関係で 処理の状況を示すために使われる。

func InsertIntoOrUpdateUser added in v1.1.0

func InsertIntoOrUpdateUser(tnow time.Time, eventid string, roominf RoomInfo) (status int)

func InsertIntoUser added in v1.2.0

func InsertIntoUser(client *http.Client, tnow time.Time, userno int) (
	err error,
)

テーブル user に新しいデータを追加する

func InsertIntoWuser added in v1.3.0

func InsertIntoWuser(client *http.Client, tnow time.Time, userno int) (
	err error,
)

テーブル user に新しいデータを追加する

func InsertNewOnes added in v1.1.0

func InsertNewOnes(
	client *http.Client,
	order int,
	eventinf exsrapi.Event_Inf,
	room srapi.Room,
) (
	err error,
)

func MakeSortKeyOfRank added in v1.2.0

func MakeSortKeyOfRank(rank string, nextscore int) (
	irank int,
)

Rank情報からランクのソートキーを作る

func SelectCurEventList added in v1.1.0

func SelectCurEventList() (
	eventlist []exsrapi.Event_Inf,
	err error,
)

DBから現在開催中のイベントを抜き出す

func SelectEventNoAndName

func SelectEventNoAndName(tevent, eventid string) (
	eventname string,
	period string,
	status int,
)

func SelectEventRoomInfList

func SelectEventRoomInfList(
	tevent string,
	eventid string,
	roominfolist *RoomInfoList,
) (
	eventname string,
	status int,
)

func SelectEventinflistFromEvent added in v1.1.0

func SelectEventinflistFromEvent(
	cond int,
	keyword string,
	offset int,
	limit int,
) (
	eventinflist []exsrapi.Event_Inf,
	err error,
)

指定した条件に該当するイベントのリストを作る。

func SelectFromEvent

func SelectFromEvent(
	tevent string,
	eventid string,
) (
	peventinf *exsrapi.Event_Inf,
	err error,
)

func SelectPointList

func SelectPointList(userno int, eventid string) (norow int, tp *[]time.Time, pp *[]int)

func UpdatePointsSetQstatus

func UpdatePointsSetQstatus(
	eventid string,
	userno int,
	tstart string,
	tend string,
	point string,
) (status int)

func UpdateUserSetProperty added in v1.2.0

func UpdateUserSetProperty(client *http.Client, tnow time.Time, user *User) (
	err error,
)

テーブル user を SHOWROOMのAPI api/roomprofile を使って得られる情報で更新する。

func UpdateWuserSetProperty added in v1.3.0

func UpdateWuserSetProperty(client *http.Client, tnow time.Time, wuser *Wuser) (
	err error,
)

テーブル user を SHOWROOMのAPI api/roomprofile を使って得られる情報で更新する。

func UpinsEventuser

func UpinsEventuser(
	client *http.Client,
	order int,
	point int,
	eventid string,
	starttime time.Time,
	cmap int,
	userno int,
	tnow time.Time,
) (
	err error,
)

イベントに新しいユーザを追加する

InserNewOnes()をコピーし引数を変更したもの
	TODO: こちらに統一すること
eventuser	新規作成または更新
user 新規作成または更新
points イベント開始時のデータを新規作成

func UpinsUserSetProperty added in v1.2.0

func UpinsUserSetProperty(client *http.Client, tnow time.Time, user *User, lmin int, wait int) (
	err error,
)

ルーム番号 user.Userno が テーブル user に存在しないときは新しいデータを挿入し、存在するときは 既存のデータを更新する。

func UpinsViewerSetProperty added in v1.4.0

func UpinsViewerSetProperty(client *http.Client, tnow time.Time, viewer *Viewer, lmin int) (
	err error,
)

テーブルviewerにリスナーの新規登録(あるいは更新登録)を行う

func UpinsWuserSetProperty added in v1.3.0

func UpinsWuserSetProperty(client *http.Client, tnow time.Time, wuser *Wuser, lmin int, wait int) (
	err error,
)

ルーム番号 user.Userno が テーブル user に存在しないときは新しいデータを挿入し、存在するときは 既存のデータを更新する。

Types

type Accesslog

type Accesslog struct {
	Handler       string
	Remoteaddress string
	Useragent     string
	Formvalues    string
	Eventid       string
	Roomid        int
	Ts            time.Time
}

アクセスログ accesslog 2024-11-27 〜

type Campaign added in v1.3.3

type Campaign struct {
	Campaignid   string
	Campaignname string
	Url          string
	Startedat    time.Time
	Endedat      time.Time
}

type Color

type Color struct {
	Name  string
	Value string
}

type ColorInf

type ColorInf struct {
	Color      string
	Colorvalue string
	Selected   string
}

type ColorInfList

type ColorInfList []ColorInf

type DBConfig

type DBConfig struct {
	UseSSH    bool   `yaml:"UseSSH"`
	DBhost    string `yaml:"DBhost"`
	DBport    string `yaml:"DBport"`
	DBname    string `yaml:"DBname"`
	DBuser    string `yaml:"DBuser"`
	DBpswd    string `yaml:"DBpswd"`
	SRacct    string `yaml:"SRacct"`
	SRpswd    string `yaml:"SRpswd"`
	SSHhost   string `yaml:"SSHhost"`
	SSHport   int    `yaml:"SSHport"`
	SSHuser   string `yaml:"SSHuser"`
	SSHpswd   string `yaml:"SSHpswd"`
	SSHprvkey string `yaml:"SSHprvkey"`
}

func OpenDb

func OpenDb(filenameofdbconfig string) (dbconfig *DBConfig, err error)

type Environment added in v1.3.0

type Environment struct {
	//	Intervalhour int	`yaml:"Intervalhour"`
	Lmin     int `yaml:"Lmin"`
	Waitmsec int `yaml:"Waitmsec"`
}
var Env Environment = Environment{

	Lmin:     14400,
	Waitmsec: 100,
}

type Event added in v1.3.0

type Event struct {
	Eventid     string // イベントID (event_url_key)
	Ieventid    int    //	イベントID (整数)
	Event_name  string
	Period      string
	Starttime   time.Time // イベント開始時刻
	Endtime     time.Time
	Noentry     int
	Intervalmin int
	Modmin      int
	Modsec      int
	Fromorder   int
	Toorder     int
	Resethh     int
	Resetmm     int
	Nobasis     int
	Maxdsp      int
	Cmap        int
	Target      int
	Rstatus     string
	Maxpoint    int
	Thinit      int //	獲得ポイントがThinit + Thdelta * int(time.Since(Starttime).Hours())を超えるルームのみデータ取得対象とする。
	Thdelta     int
	Achk        int
	Aclr        int
}

イベント構造体 PRIMARY KEY (eventid)

type Eventuser added in v1.3.0

type Eventuser struct {
	Eventid       string
	Userno        int
	Istarget      string
	Iscntrbpoints string
	Graph         string
	Color         string
	Point         int
	Vld           int
	Status        int //	1: ユーザーによって指定された=無条件にデータ取得対象とする
}
	イベントに参加しているユーザの構造体
 PRIMARY KEY (`eventid`,`userno`)

type GiftRanking added in v1.3.3

type GiftRanking struct {
	Campaignid string
	Grid       int
	Grname     string
	Grtype     string
	Norder     int
	Cntrblst   int
	Startedat  time.Time
	Endedat    time.Time
}

type GiftScore added in v1.3.0

type GiftScore struct {
	Giftid  int
	Userno  int
	Orderno int
	Score   int
	Status  string
	Ts      time.Time
}

ギフトランキング(イベントギフトランキングではない)

type GiftScoreCntrb added in v1.4.0

type GiftScoreCntrb struct {
	Giftid   int
	Userno   int
	Viewerid int
	Orderno  int
	Score    int
	Ts       time.Time
}

ギフト貢献ランキング

type PerSlot

type PerSlot struct {
	Timestart time.Time
	Dstart    string
	Tstart    string
	Tend      string
	Point     string
	Ipoint    int
	Tpoint    string
}

type PerSlotInf

type PerSlotInf struct {
	Eventname   string
	Eventid     string
	Period      string
	Roomname    string
	Roomid      int
	Perslotlist []PerSlot
}

func MakePointPerSlot

func MakePointPerSlot(tevent, eventid string) (perslotinflist []PerSlotInf, status int)

type Points added in v1.2.0

type Points struct {
	Ts      time.Time
	User_id int
	Eventid string
	Point   int
	Rank    int
	Gap     int
	Pstatus string
	Qstatus string
	Ptime   string
	Qtime   string
}

type RoomInfo

type RoomInfo struct {
	Name      string //	ルーム名のリスト
	Longname  string
	Shortname string
	Account   string //	アカウントのリスト、アカウントは配信のURLの最後の部分の英数字です。
	ID        string //	IDのリスト、IDはプロフィールのURLの最後の部分で5~6桁の数字です。
	Userno    int
	//	APIで取得できるデータ(1)
	Genre      string
	Rank       string
	Irank      int
	Nrank      string
	Prank      string
	Followers  int
	Sfollowers string
	Fans       int
	Fans_lst   int
	Level      int
	Slevel     string
	//	APIで取得できるデータ(2)
	Order        int
	Point        int //	イベント終了後12時間〜36時間はイベントページから取得できることもある
	Spoint       string
	Istarget     string
	Graph        string
	Iscntrbpoint string
	Color        string
	Colorvalue   string
	Colorinflist ColorInfList
	Formid       string
	Eventid      string
	Status       string
	Statuscolor  string
}

type RoomInfoList

type RoomInfoList []RoomInfo

func (RoomInfoList) Choose

func (r RoomInfoList) Choose(from, to int) (s RoomInfoList)

func (RoomInfoList) Len

func (r RoomInfoList) Len() int

sort.Sort()のための関数三つ

func (RoomInfoList) Less

func (r RoomInfoList) Less(i, j int) bool

降順に並べる

func (RoomInfoList) Swap

func (r RoomInfoList) Swap(i, j int)

type Timetable added in v1.3.0

type Timetable struct {
	Eventid     string    // イベントID、=event_url_keyを設定する
	Userid      int       // ルームIDを設定する
	Sampletm1   time.Time // 貢献ポイント取得予定(希望)時刻(貢献ポイントが落ち着く頃を指定する)
	Sampletm2   time.Time // 貢献ポイント取得時刻、実際にデータを取得した時刻が格納される
	Stime       time.Time // 配信枠の開始時刻
	Etime       time.Time // 配信枠の終了推定時刻
	Target      int       // -1を設定する。配信枠での無料ギフトの最大獲得ポイントを格納される(最近はあんまり意味ないし、一概にいくらと決めにくい)
	Totalpoint  int       // 貢献ポイントの合計値が格納される
	Earnedpoint int       // 獲得ポイントの増分を設定する
	Status      int       // 0を設定する、貢献ポイントの増分が格納されたら1が格納される
}

配信枠の構造体(配信枠別リスナー別貢献ポイント用)

PRIMARY KEY (eventid,userid,sampletm1)

type User added in v1.2.0

type User struct {
	Userno       int
	Userid       string
	User_name    string
	Longname     string
	Shortname    string
	Genre        string
	GenreID      int
	Rank         string
	Nrank        string
	Prank        string
	Irank        int
	Inrank       int
	Iprank       int
	Itrank       int
	Level        int
	Followers    int
	Fans         int
	FanPower     int
	Fans_lst     int
	FanPower_lst int
	Ts           time.Time
	Getp         string
	Graph        string
	Color        string
	Currentevent string
}

type Userhistory added in v1.3.0

type Userhistory struct {
	Userno    int
	User_name string
	Genre     string
	Rank      string
	Nrank     string
	Prank     string
	Level     int
	Followers int
	Fans      int
	Fans_lst  int
	Ts        time.Time
}

userの履歴を保存する構造体 PRIMARY KEY (`userno`,`ts`)

type Viewer added in v1.3.0

type Viewer struct {
	Viewerid int
	Name     string
	Sname    string
	Ts       time.Time
}

type ViewerGiftScore added in v1.3.0

type ViewerGiftScore struct {
	Giftid   int
	Viewerid int
	Orderno  int
	Score    int
	Status   string
	Ts       time.Time
}

ユーザーギフトランキング(userは配信者の意味で使用しているのでviewerとしてある)

type ViewerHistory added in v1.3.0

type ViewerHistory struct {
	Viewerid int
	Name     string //	ランキングデータにあるリスナー名
	Sname    string //	リスナーの表示名(User.Longnameと同様、User.Shortnameに相当するものはない)
	Ts       time.Time
}

type Wevent

type Wevent Event

type Weventuser

type Weventuser Eventuser

type Wuser added in v1.3.0

type Wuser User

type Wuserhistory

type Wuserhistory Userhistory

Jump to

Keyboard shortcuts

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