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) } }