scryer-db 0.2.0

Database models and Turso/SQLite storage layer for Scryer code intelligence
use super::{DependencyPackage, SourceFile};
use toasty::Model;

#[derive(Debug, Clone, Model)]
#[table = "symbol"]
pub struct Symbol {
    #[key]
    #[auto]
    pub id: u64,
    #[index]
    pub project_id: u64,
    #[index]
    pub file_id: u64,
    #[belongs_to(key = file_id)]
    pub source_file: toasty::Deferred<SourceFile>,
    #[index]
    pub dependency_package_id: Option<u64>,
    #[belongs_to(key = dependency_package_id)]
    pub dependency_package: toasty::Deferred<Option<DependencyPackage>>,
    pub scope_id: Option<u64>,
    #[index]
    pub name: String,
    #[index]
    pub qualified_name: String, // e.g. "crate::server::router::handle_route"
    pub kind: String,       // "fn", "struct", "trait", "enum", "type", "const"
    pub visibility: String, // "public", "crate", "private"
    pub signature: String,
    pub docstring: Option<String>,
    pub start_byte: usize,
    pub end_byte: usize,
    pub start_line: u32,
    pub end_line: u32,
}