feat: Use snowflake identifiers
All checks were successful
/ pre-commit (push) Successful in 1m7s

Fixes #29.

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-09-20 08:37:16 +02:00
commit 2c3ca08dbf
Signed by: jriou
GPG key ID: 9A099EDA51316854
9 changed files with 24 additions and 39 deletions

View file

@ -1,17 +1,11 @@
package server
import (
"fmt"
"time"
"git.riou.xyz/jriou/coller/internal"
"gorm.io/gorm"
)
const ID_MAX_RETRIES = 10
var idLength = 5
type Note struct {
ID string `json:"id" gorm:"primaryKey"`
Content []byte `json:"content" gorm:"not null"`
@ -21,27 +15,8 @@ type Note struct {
Language string `json:"language"`
}
// Generate ID and compress content before saving to the database
// Compress content before saving to the database
func (n *Note) BeforeCreate(trx *gorm.DB) (err error) {
for i := 0; i < ID_MAX_RETRIES; i++ {
if n.ID != "" {
continue
}
id := internal.GenerateChars(idLength)
var note Note
trx.Where("id = ?", id).Find(&note)
if note.ID == "" {
n.ID = id
continue
}
}
if n.ID == "" {
return fmt.Errorf("could not find unique id before creating the note")
}
n.Content = Compress(n.Content)
return nil
}