zkt24/z2/backend/db/db.go
2024-04-25 13:51:47 +02:00

66 lines
1.5 KiB
Go

package db
import (
"context"
"thesis/core"
"thesis/ent"
"thesis/ent/key"
)
func AddTx(client *ent.Client, tx *core.Transaction, signerKey *ent.Key) *ent.Transactions {
dbtx, err := client.Transactions.Create().
SetType(tx.Type).
SetTimestamp(int(tx.Timestamp)).
SetComment(tx.Comment).
SetContent(tx.Content).
SetHash(tx.Hash).
SetSignature(tx.Signature).AddSigner(signerKey).Save(context.Background())
handleError(err)
return dbtx
}
func AddBlock(client *ent.Client, block *core.Block) *ent.Blocks {
dbBlock, err := client.Blocks.Create().
SetHash(block.Hash).
SetID(block.Nonce).
SetLength(block.Length).
SetPreviousHash(block.PreviousHash).
Save(context.Background())
handleError(err)
return dbBlock
}
func AddKey(client *ent.Client, pk string, owner string) error {
_, err := client.Key.Create().SetPublicKey(pk).SetOwner(owner).Save(context.Background())
return err
}
func GetKeyFromHex(client *ent.Client, pk string) *ent.Key {
k, err := client.Key.Query().Where(key.PublicKeyEQ(pk)).All(context.Background())
handleError(err)
return k[0]
}
func GetTxCount(client *ent.Client) int {
count, err := client.Transactions.Query().Count(context.Background())
handleError(err)
return count
}
func GetLatestBlock(client *ent.Client) *ent.Blocks {
blocks, err := client.Blocks.Query().All(context.Background())
handleError(err)
if len(blocks) == 0 {
return nil
}
return blocks[len(blocks)-1]
}
func handleError(err error) {
if err != nil {
panic(err)
}
}