package db import ( "time" "git.chuangxin1.com/cx/myth" ) // DB error code const ( ErrOK = 0 // ErrOK ok ErrException = 1 // ErrException exception 异常 ErrExists = 2 // ErrExists exists 数据存在 ErrNotFound = 3 // ErrNotFound not found 未找到关键数据 ErrAuthorized = 4 // ErrAuthorized authorized 未认证 ErrNotConnect = 5 // ErrNotConnect connect error 数据库内部连接错误 ErrDataNotFound = 6 // data not found 数据未找到 ErrExpired = 7 // expired 已过期 ErrInsufficientBalance = 8 // insufficient balance 余额不足 ErrCreditLimit = 9 // Credit Limit 超额 ) // Config config type Config struct { Driver string DNS string MaxOpenConns int MaxIdle int MaxLifetime time.Duration } // Reply db exec return insert/update/delete type Reply struct { OK bool Err error LastErr error ErrCode int LastID int64 RowsAffected int64 } // ReplyOk exec ok func ReplyOk(rowsAffected, lastID int64) Reply { var reply Reply reply.OK = true reply.ErrCode = 0 reply.LastID = lastID reply.RowsAffected = rowsAffected return reply } // ReplyFaild exec faild func ReplyFaild(errCode int, err, errText error) (reply Reply) { reply.OK = false reply.ErrCode = errCode reply.LastID = -1 reply.RowsAffected = -1 reply.Err = err reply.LastErr = errText return } // ReplyToReplyData db reply to response func ReplyToReplyData(reply Reply) *myth.ReplyData { status := myth.ErrOk if !reply.OK { switch reply.ErrCode { case ErrException: status = myth.ErrException case ErrExists: status = myth.ErrDataExists case ErrNotFound: status = myth.ErrDataNotFound case ErrDataNotFound: status = myth.ErrDataNotFound case ErrAuthorized: status = myth.ErrUnAuthorized case ErrNotConnect: status = myth.ErrNotFound case ErrExpired: status = myth.ErrNotAllowed case ErrInsufficientBalance: status = myth.ErrNotAllowed case ErrCreditLimit: status = myth.ErrNotAllowed default: status = myth.ErrException } return myth.ReplyErr(status, reply.LastErr.Error()) } return myth.ReplyOk() }