nanoid

A tiny, secure, URL-friendly, unique string ID generator for Go
git clone git://git.lair.cx/nanoid
Log | Files | Refs | README

commit 178cde6993d0573b61a94cdf7dca266d09238861
parent 7dfe58e2bfc446a1ba23f09197f67147cca93d1e
Author: Yongbin Kim <iam@yongbin.kim>
Date:   Tue, 10 Jan 2023 07:30:37 +0000

feat: Added support for database/sql package

Diffstat:
Mnanoid.go | 20++++++++++++++++++++
1 file changed, 20 insertions(+), 0 deletions(-)

diff --git a/nanoid.go b/nanoid.go @@ -1,6 +1,7 @@ package nanoid import ( + "database/sql/driver" "io" "sync" "unsafe" @@ -101,3 +102,22 @@ func (id NanoID) GoString() string { func (id NanoID) Bytes() []byte { return id[:] } + +// Scan implements the sql.Scanner interface. +func (id *NanoID) Scan(src interface{}) error { + switch src := src.(type) { + case []byte: + copy(id[:], src) + return nil + case string: + copy(id[:], src) + return nil + } + + return nil +} + +// Value implements the driver.Valuer interface. +func (id NanoID) Value() (driver.Value, error) { + return id.String(), nil +}