Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neonxp/objectid
Генерация уникальных objectid
https://github.com/neonxp/objectid
Last synced: about 1 month ago
JSON representation
Генерация уникальных objectid
- Host: GitHub
- URL: https://github.com/neonxp/objectid
- Owner: neonxp
- License: gpl-3.0
- Created: 2022-12-21T15:23:13.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-02T01:19:15.000Z (about 2 years ago)
- Last Synced: 2023-08-12T06:25:29.269Z (over 1 year ago)
- Language: Go
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ObjectID
Простая библиотека для генерации псевдослучайных глобально уникальных идентификаторов.
Полученные идентификаторы реализуют функцию сравнения, таким образом поддаются сортировке.
Так же из идентификатора можно получить время его генерации, а так же порядковый номер генерации в пределах сессии. Счетчик используемый при генерации идентификаторов потокобезопасный.## API
```go package objectid // import "go.neonxp.dev/objectid"```
Функции
```go func Seed()```
необходимо вызвать в начале сессии```go func New() ID```
возвращает новый идентификатор```go func FromString(s string) (ID, error)```
возвращает идентификатор из base64 представления```go func FromTime(t time.Time) ID```
возвращает идентификатор на основе переданного времениТипы и методы
```go type ID []byte``` тип представляющий собой идентификатор
```go func (i ID) Counter() uint64```
возвращает порядковый номер идентификатора в сессии```go func (i ID) Less(i2 ID) bool```
возвращает true если i2 > i```go func (i ID) MarshalJSON() ([]byte, error)```
формирует json представление идентификатора```go func (i ID) String() string```
возвращает base64 представление идентификатора```go func (i ID) Time() time.Time```
возвращает время создания идентификатора```go func (i *ID) UnmarshalJSON(b []byte) error```
парсит идентификатор из jsonПримеры
```go
import "go.neonxp.dev/objectid"objectid.Seed()
id1 := objectid.New()
fmt.Printf("Идентификатор сгенерированный сегодня: %s в %s\n", id1, id1.Time()) // пример: Идентификатор сгенерированный сегодня: AAXwV/DVGwXtTj0FRm92SQF3MiquMPlK в 2022-12-21 18:09:36.872197 +0300 MSK
id2 := objectid.FromTime(time.Now().Add(-24 * time.Hour))
fmt.Printf("Идентификатор сгенерированный вчера: %s в %s\n", id2, id2.Time()) // пример: Идентификатор сгенерированный вчера: AAXwQ+U14N8mbGoVPiiNqyZCss7lEV0Z в 2022-12-20 18:14:42.541791 +0300 MSK
r := "id2 > id1"
if id2.Less(id1) {
r = "id2 < id1"
}
fmt.Print(r) // выведет: id2 < id1
```## Лицензия
GNU GPLv3