Files
2025-04-09 15:23:27 -07:00

48 lines
1.1 KiB
Go

package model
import (
"fmt"
"strconv"
"time"
"github.com/dchest/siphash"
)
// compute the hash of a source code string
func HashSource(source string) uint64{
return siphash.Hash(0, 0, []byte(source))
}
// format a hash value as a hexidecimal string
func HashFormat(hash uint64) string{
return fmt.Sprintf("%016x", hash)
}
// parse a hexidecimal hash string
func HashParse(hash string) (uint64, error){
return strconv.ParseUint(hash, 16, 64)
}
type ResourceType uint32
const (
ResourceUnknown ResourceType = 0
ResourceMapfix ResourceType = 1
ResourceSubmission ResourceType = 2
)
type Script struct {
ID uint64 `gorm:"primaryKey"`
Name string
hash uint64
Source string
ResourceType ResourceType // is this a submission or is it a mapfix
ResourceID uint64 // which submission / mapfix did this script first appear in
CreatedAt time.Time
UpdatedAt time.Time
}
// postgres does not support unsigned integers, so we have to pretend
func (script *Script) GetPostgresInt64() (int64) {
return int64(script.hash)
}