Files
herolib/lib/data/flist/block.v
2024-12-25 09:23:31 +01:00

52 lines
917 B
V

module flist
@[table: 'block']
pub struct Block {
pub mut:
ino u64
id string
key string
}
fn (mut f Flist) add_block(block Block) ! {
sql f.con {
insert block into Block
}!
}
fn do_blocks_match(b1 []Block, b2 []Block) bool {
if b1.len != b2.len {
return false
}
for i, b in b1 {
if b.key != b2[i].key || b.id != b2[i].id {
return false
}
}
return true
}
fn (mut f Flist) get_inode_blocks(ino u64) ![]Block {
blocks := sql f.con {
select from Block where ino == ino
}!
return blocks
}
fn (mut f Flist) delete_block(ino u64) ! {
f.con.exec_param('delete from block where ino = ?;', '${ino}')!
}
// copy_blocks creates block a copy of the block entries related to src_ino and relates them to dest_ino
fn (mut f Flist) copy_blocks(src_ino u64, dest_ino u64) ! {
mut blocks := f.get_inode_blocks(src_ino)!
for mut block in blocks {
block.ino = dest_ino
f.add_block(block)!
}
}