本文整理汇总了Golang中database/sql.NullInt64.Valid方法的典型用法代码示例。如果您正苦于以下问题:Golang NullInt64.Valid方法的具体用法?Golang NullInt64.Valid怎么用?Golang NullInt64.Valid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类database/sql.NullInt64
的用法示例。
在下文中一共展示了NullInt64.Valid方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SaveThing
func (w *DatabaseWorld) SaveThing(thing *Thing) (ok bool) {
tabletext, err := json.Marshal(thing.Table)
if err != nil {
log.Println("Error serializing table data for thing", thing.Id, ":", err.Error())
return false
}
var parent sql.NullInt64
if thing.Parent != 0 {
parent.Int64 = int64(thing.Parent)
parent.Valid = true
}
var owner sql.NullInt64
if thing.Owner != 0 && thing.Type.HasOwner() {
owner.Int64 = int64(thing.Owner)
owner.Valid = true
}
var program sql.NullString
if thing.Program != nil {
program.String = thing.Program.Text
program.Valid = true
}
// TODO: save the allow list
_, err = w.db.Exec("UPDATE thing SET name = $1, parent = $2, owner = $3, adminlist = $4, denylist = $5, tabledata = $6, program = $7 WHERE id = $8",
thing.Name, parent, owner, thing.AdminList, thing.DenyList,
types.JsonText(tabletext), program, thing.Id)
if err != nil {
log.Println("Error saving a thing", thing.Id, ":", err.Error())
return false
}
return true
}
示例2: checkIntForNull
func checkIntForNull(eventInt string, event *sql.NullInt64) {
var err error
if eventInt == "" {
event.Valid = false
} else {
event.Int64, err = strconv.ParseInt(eventInt, 10, 64)
if err != nil {
event.Valid = false
return
}
event.Valid = true
}
}
示例3: createLoginLog
func createLoginLog(succeeded bool, remoteAddr, login string, user *User) error {
succ := 0
if succeeded {
succ = 1
}
var userId sql.NullInt64
if user != nil {
userId.Int64 = int64(user.ID)
userId.Valid = true
mu.Lock()
if succeeded {
resetUserFailCount(user.ID)
resetIpFailCount(remoteAddr)
} else {
incrUserFailCount(user.ID)
incrIpFailCount(remoteAddr)
}
mu.Unlock()
}
_, err := db.Exec(
"INSERT INTO login_log (`created_at`, `user_id`, `login`, `ip`, `succeeded`) "+
"VALUES (?,?,?,?,?)",
time.Now(), userId, login, remoteAddr, succ,
)
return err
}
示例4: addPublicAccess
func addPublicAccess(app *app, houseID, html string) error {
// Parse title of page
title := titleReg.FindStringSubmatch(html)[1]
if !validTitle(title) {
// <title/> was invalid, so look for an <h1/>
header := headerReg.FindStringSubmatch(html)[1]
if validTitle(header) {
// <h1/> was valid, so use that instead of <title/>
title = header
}
}
title = strings.TrimSpace(title)
// Get thumbnail
data := url.Values{}
data.Set("url", fmt.Sprintf("%s/%s.html", app.cfg.HostName, houseID))
u, err := url.ParseRequestURI("https://peeper.html.house")
u.Path = "/"
urlStr := fmt.Sprintf("%v", u)
client := &http.Client{}
r, err := http.NewRequest("POST", urlStr, bytes.NewBufferString(data.Encode()))
if err != nil {
fmt.Printf("Error creating request: %v", err)
}
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
var thumbURL string
resp, err := client.Do(r)
if err != nil {
fmt.Printf("Error requesting thumbnail: %v", err)
return impart.HTTPError{http.StatusInternalServerError, "Couldn't generate thumbnail"}
} else {
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
if resp.StatusCode == http.StatusOK {
thumbURL = string(body)
}
}
// Add to public houses table
approved := sql.NullInt64{Valid: false}
if app.cfg.AutoApprove {
approved.Int64 = 1
approved.Valid = true
}
_, err = app.db.Exec("INSERT INTO publichouses (house_id, title, thumb_url, added, updated, approved) VALUES (?, ?, ?, NOW(), NOW(), ?) ON DUPLICATE KEY UPDATE title = ?, updated = NOW()", houseID, title, thumbURL, approved, title)
if err != nil {
return err
}
// Tweet about it
tweet(app, houseID, title)
return nil
}
示例5: tonullint8
func tonullint8(d *int8) sql.NullInt64 {
var n sql.NullInt64
n.Valid = (d != nil)
if n.Valid {
return n
}
n.Int64 = int64(*d)
return n
}
示例6: tonullint64
func tonullint64(d *int64) sql.NullInt64 {
var n sql.NullInt64
n.Valid = (d != nil)
if !n.Valid {
return n
}
n.Int64 = *d
return n
}
示例7: createLoginLog
func createLoginLog(succeeded bool, remoteAddr, login string, user *User) error {
succ := 0
if succeeded {
succ = 1
}
var userId sql.NullInt64
if user != nil {
userId.Int64 = int64(user.ID)
userId.Valid = true
}
_, err := prepareInsertLog.Exec(time.Now(), userId, login, remoteAddr, succ)
return err
}
示例8: preparePutTweet
func preparePutTweet(db *sql.DB) func(*twitter.Tweet) {
putTweetStmt, err := db.Prepare(putTweetSql)
if err != nil {
panic(err)
}
return func(t *twitter.Tweet) {
var retweetedStatusId sql.NullInt64
if t.RetweetedStatus != nil {
retweetedStatusId.Int64 = t.RetweetedStatus.Id
retweetedStatusId.Valid = true
}
putTweetStmt.Exec(t.Id, t.Text, t.CreatedAt.Time, t.InReplyToStatusId, t.InReplyToUserId, retweetedStatusId, t.Source, t.User.Id)
}
}
示例9: InsertLine
func (r *repository) InsertLine(userID, convoID string, line *Line) error {
var publicID string
var convo convoRec
err := r.getConvo.Get(&convo, struct{ UserID, PublicID string }{userID, convoID})
if err != nil {
return errors.Trace(err)
}
for i := 0; i < maxInsertRetries; i++ {
rv, err := rand.Int(rand.Reader, big.NewInt(math.MaxInt64))
if err != nil {
return errors.Trace(err)
}
publicID = lineIDPrefix + strconv.FormatUint(rv.Uint64(), 36)
var moodID sql.NullInt64
if line.mood.id != 0 {
moodID.Int64 = int64(line.mood.id)
moodID.Valid = true
}
_, err = r.insertLine.Exec(struct {
PublicID, Animal, Text, MoodName string
Think bool
MoodID sql.NullInt64
ConversationID int
}{
publicID, line.Animal, line.Text, line.MoodName,
line.Think,
moodID,
convo.IntID,
})
if err == nil {
line.ID = publicID
return nil
}
dbErr, ok := err.(*pq.Error)
if !ok || dbErr.Code != dbErrDupUnique {
return errors.Trace(err)
}
}
return errors.New("Unable to insert a new, unique line")
}
示例10: createLoginLog
func createLoginLog(succeeded bool, remoteAddr, login string, user *User) error {
succ := 0
if succeeded {
succ = 1
}
var userId sql.NullInt64
if user != nil {
userId.Int64 = int64(user.ID)
userId.Valid = true
}
_, err := db.Exec(
"INSERT INTO login_log (`created_at`, `user_id`, `login`, `ip`, `succeeded`) "+
"VALUES (?,?,?,?,?)",
time.Now(), userId, login, remoteAddr, succ,
)
return err
}
示例11: createLoginLog
func createLoginLog(succeeded bool, remoteAddr, login string, user *User) {
succ := 0
if succeeded {
succ = 1
}
now := time.Now()
var userId sql.NullInt64
if user != nil {
userId.Int64 = int64(user.ID)
userId.Valid = true
}
go func() {
db.Exec(
"INSERT INTO login_log (`created_at`, `user_id`, `login`, `ip`, `succeeded`) "+
"VALUES (?,?,?,?,?)",
now, userId, login, remoteAddr, succ,
)
}()
if user != nil {
if succeeded {
UserIdFailures[user.ID] = 0
IpFailtures[remoteAddr] = 0
LastLoginHistory[user.ID] = [2]LastLogin{
{
Login: login,
IP: remoteAddr,
CreatedAt: now.Format("2006-01-02 15:04:05"),
},
LastLoginHistory[user.ID][0],
}
} else {
UserIdFailures[user.ID]++
IpFailtures[remoteAddr]++
}
}
}
示例12: CreateContainer
func (db *SQLDB) CreateContainer(container Container, ttl time.Duration) (SavedContainer, error) {
if !(isValidCheckID(container.ContainerIdentifier) || isValidStepID(container.ContainerIdentifier)) {
return SavedContainer{}, ErrInvalidIdentifier
}
tx, err := db.conn.Begin()
if err != nil {
return SavedContainer{}, err
}
defer tx.Rollback()
checkSource, err := json.Marshal(container.CheckSource)
if err != nil {
return SavedContainer{}, err
}
envVariables, err := json.Marshal(container.EnvironmentVariables)
if err != nil {
return SavedContainer{}, err
}
user := container.User
interval := fmt.Sprintf("%d second", int(ttl.Seconds()))
if container.PipelineName != "" && container.PipelineID == 0 {
// containers that belong to some pipeline must be identified by pipeline ID not name
return SavedContainer{}, errors.New("container metadata must include pipeline ID")
}
var pipelineID sql.NullInt64
if container.PipelineID != 0 {
pipelineID.Int64 = int64(container.PipelineID)
pipelineID.Valid = true
}
var resourceID sql.NullInt64
if container.ResourceID != 0 {
resourceID.Int64 = int64(container.ResourceID)
resourceID.Valid = true
}
var resourceTypeVersion string
if container.ResourceTypeVersion != nil {
resourceTypeVersionBytes, err := json.Marshal(container.ResourceTypeVersion)
if err != nil {
return SavedContainer{}, err
}
resourceTypeVersion = string(resourceTypeVersionBytes)
}
var buildID sql.NullInt64
if container.BuildID != 0 {
buildID.Int64 = int64(container.BuildID)
buildID.Valid = true
}
workerName := container.WorkerName
if workerName == "" {
workerName = container.WorkerName
}
var attempts sql.NullString
if len(container.Attempts) > 0 {
attemptsBlob, err := json.Marshal(container.Attempts)
if err != nil {
return SavedContainer{}, err
}
attempts.Valid = true
attempts.String = string(attemptsBlob)
}
var imageResourceSource sql.NullString
if container.ImageResourceSource != nil {
marshaled, err := json.Marshal(container.ImageResourceSource)
if err != nil {
return SavedContainer{}, err
}
imageResourceSource.String = string(marshaled)
imageResourceSource.Valid = true
}
var imageResourceType sql.NullString
if container.ImageResourceType != "" {
imageResourceType.String = container.ImageResourceType
imageResourceType.Valid = true
}
_, err = tx.Exec(`
INSERT INTO containers (handle, resource_id, step_name, pipeline_id, build_id, type, worker_name, expires_at, ttl, check_type, check_source, plan_id, working_directory, env_variables, attempts, stage, image_resource_type, image_resource_source, process_user, resource_type_version)
VALUES ($1, $2, $3, $4, $5, $6, $7, NOW() + $8::INTERVAL, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)`,
container.Handle,
resourceID,
container.StepName,
pipelineID,
buildID,
container.Type.String(),
workerName,
interval,
//.........这里部分代码省略.........
示例13: CreateContainer
func (db *SQLDB) CreateContainer(container Container, ttl time.Duration) (Container, error) {
if !isValidID(container.ContainerIdentifier) {
return Container{}, ErrInvalidIdentifier
}
tx, err := db.conn.Begin()
if err != nil {
return Container{}, err
}
checkSource, err := json.Marshal(container.CheckSource)
if err != nil {
return Container{}, err
}
envVariables, err := json.Marshal(container.EnvironmentVariables)
if err != nil {
return Container{}, err
}
user := container.User
interval := fmt.Sprintf("%d second", int(ttl.Seconds()))
var pipelineID sql.NullInt64
if container.PipelineName != "" {
pipeline, err := db.GetPipelineByTeamNameAndName(atc.DefaultTeamName, container.PipelineName)
if err != nil {
return Container{}, fmt.Errorf("failed to find pipeline: %s", err.Error())
}
pipelineID.Int64 = int64(pipeline.ID)
pipelineID.Valid = true
}
var resourceID sql.NullInt64
if container.ResourceID != 0 {
resourceID.Int64 = int64(container.ResourceID)
resourceID.Valid = true
}
var buildID sql.NullInt64
if container.BuildID != 0 {
buildID.Int64 = int64(container.BuildID)
buildID.Valid = true
}
workerName := container.WorkerName
if workerName == "" {
workerName = container.WorkerName
}
var attempts sql.NullString
if len(container.Attempts) > 0 {
attemptsBlob, err := json.Marshal(container.Attempts)
if err != nil {
return Container{}, err
}
attempts.Valid = true
attempts.String = string(attemptsBlob)
}
var imageResourceSource sql.NullString
if container.ImageResourceSource != nil {
marshaled, err := json.Marshal(container.ImageResourceSource)
if err != nil {
return Container{}, err
}
imageResourceSource.String = string(marshaled)
imageResourceSource.Valid = true
}
var imageResourceType sql.NullString
if container.ImageResourceType != "" {
imageResourceType.String = container.ImageResourceType
imageResourceType.Valid = true
}
defer tx.Rollback()
_, err = tx.Exec(`
INSERT INTO containers (handle, resource_id, step_name, pipeline_id, build_id, type, worker_name, expires_at, check_type, check_source, plan_id, working_directory, env_variables, attempts, stage, image_resource_type, image_resource_source, process_user)
VALUES ($1, $2, $3, $4, $5, $6, $7, NOW() + $8::INTERVAL, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18)`,
container.Handle,
resourceID,
container.StepName,
pipelineID,
buildID,
container.Type.String(),
workerName,
interval,
container.CheckType,
checkSource,
string(container.PlanID),
container.WorkingDirectory,
envVariables,
attempts,
string(container.Stage),
imageResourceType,
imageResourceSource,
//.........这里部分代码省略.........
示例14: CreateNullInt64
func CreateNullInt64(v int64) sql.NullInt64 {
var ni sql.NullInt64
ni.Valid = true
ni.Int64 = v
return ni
}
示例15: handlerErrors
func handlerErrors(w http.ResponseWriter, r *http.Request) error {
r.ParseForm()
if r.URL.Path != "/debug/errors" {
return handlerNotFound(w, r)
}
tx, err := mail.DB.Begin()
if err != nil {
return err
}
defer tx.Rollback()
us, err := getUserSession(r, tx)
if err != nil {
return err
}
if r.Method == "POST" {
// User may or may not be logged in (eg: outside of site).
var nullableUserID, nullableCookieID sql.NullInt64
if us.userID != 0 {
nullableUserID.Int64 = int64(us.userID)
nullableUserID.Valid = true
selectCookieIDStmt := mail.TxStmt(sqlSelectCookieID, tx)
defer selectCookieIDStmt.Close()
err := selectCookieIDStmt.QueryRow(getCookie(r)).Scan(&nullableCookieID)
if err != nil {
return err
}
}
postError, err := getBody(r)
if err != nil {
return err
}
insertErrorStmt := mail.TxStmt(sqlInsertError, tx)
defer insertErrorStmt.Close()
_, err = insertErrorStmt.Exec(nullableUserID, nullableCookieID,
r.RequestURI, postError, r.Header.Get("Referer"),
r.Header.Get("User-Agent"))
if err != nil {
return err
}
err = tx.Commit()
if err != nil {
return err
}
errorsPage := ErrorsPage{}
errorsPage.ErrorLogged = true
return tErrors.Execute(w, errorsPage)
}
if !us.isAdmin {
errorsPage := ErrorsPage{}
errorsPage.NoAccess = true
return tErrors.Execute(newWSCollapser(&w), errorsPage)
}
selectErrorsStmt := mail.TxStmt(sqlSelectErrors, tx)
defer selectErrorsStmt.Close()
rows, err := selectErrorsStmt.Query()
if err != nil {
return err
}
defer rows.Close()
errorsPage := ErrorsPage{}
for rows.Next() {
var email sql.NullString
var url, e, referrer, userAgent string
var t time.Time
err = rows.Scan(&email, &url, &e, &referrer, &userAgent, &t)
if err != nil {
return err
}
errorsPage.Errors = append(errorsPage.Errors, ErrorItem{
email.String, url, e, referrer, userAgent, t.UTC().String()})
}
err = rows.Err() // get any error encountered during iteration
if err != nil {
return err
}
return tErrors.Execute(newWSCollapser(&w), errorsPage)
}