1 Star 0 Fork 0

DaMeng/Ent

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sid.go 916 Bytes
一键复制 编辑 原始数据 按行查看 历史
DaMeng 提交于 2024-10-22 15:49 +08:00 . :tada:fork ent
// Copyright 2019-present Facebook Inc. All rights reserved.
// This source code is licensed under the Apache 2.0 license found
// in the LICENSE file in the root directory of this source tree.
package sid
import (
"crypto/rand"
"database/sql/driver"
"errors"
"fmt"
"math/big"
"strconv"
)
type ID string
func (i ID) String() string {
return string(i)
}
func (i ID) Value() (driver.Value, error) {
r, err := strconv.ParseInt(string(i), 10, 64)
if err != nil {
return nil, err
}
return r, nil
}
func (i *ID) Scan(src any) error {
switch v := src.(type) {
case nil:
return nil
case int64:
*i = ID(fmt.Sprint(v))
return nil
}
return errors.New("not a valid ID")
}
func New() ID {
return NewLength(10)
}
func NewLength(l int) ID {
var out string
for len(out) < l {
result, _ := rand.Int(rand.Reader, big.NewInt(100))
out += fmt.Sprint(result.Uint64() + 1)
}
return ID(out[:l])
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/damengde/ent.git
git@gitee.com:damengde/ent.git
damengde
ent
Ent
90870c5ba095

搜索帮助