fix and refactor vfs modules to merge ourdb implementations into generic vfs_db and separate vfs_local

This commit is contained in:
timurgordon
2025-02-27 11:12:17 +03:00
parent 972bb9f755
commit fe1becabaf
40 changed files with 1474 additions and 2152 deletions

57
lib/vfs/metadata.v Normal file
View File

@@ -0,0 +1,57 @@
module vfs
import time
// Metadata represents the common metadata for both files and directories
pub struct Metadata {
pub mut:
id u32 @[required] // unique identifier used as key in DB
name string @[required] // name of file or directory
file_type FileType
size u64
created_at i64 // unix epoch timestamp
modified_at i64 // unix epoch timestamp
accessed_at i64 // unix epoch timestamp
mode u32 // file permissions
owner string
group string
}
// FileType represents the type of a filesystem entry
pub enum FileType {
file
directory
symlink
}
// mkdir creates a new directory with default permissions
pub fn new_metadata(metadata Metadata) Metadata {
current_time := time.now().unix()
return Metadata{
...metadata
created_at: current_time
modified_at: current_time
accessed_at: current_time
}
}
// Get time.Time objects from epochs
pub fn (m Metadata) created_time() time.Time {
return time.unix(m.created_at)
}
pub fn (m Metadata) modified_time() time.Time {
return time.unix(m.modified_at)
}
pub fn (m Metadata) accessed_time() time.Time {
return time.unix(m.accessed_at)
}
pub fn (mut m Metadata) modified() {
m.modified_at = time.now().unix()
}
pub fn (mut m Metadata) accessed() {
m.accessed_at = time.now().unix()
}