feat: add reference
This commit is contained in:
@@ -1,42 +1,58 @@
|
||||
CREATE TABLE files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
path TEXT NOT NULL UNIQUE,
|
||||
language TEXT NOT NULL,
|
||||
package TEXT,
|
||||
hash TEXT NOT NULL,
|
||||
indexed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
path TEXT NOT NULL UNIQUE,
|
||||
LANGUAGE TEXT NOT NULL,
|
||||
package TEXT,
|
||||
hash TEXT NOT NULL,
|
||||
indexed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE symbols (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file_id INTEGER NOT NULL REFERENCES files(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
kind TEXT NOT NULL CHECK(kind IN (
|
||||
'function', 'method', 'class', 'type',
|
||||
'interface', 'constant', 'variable', 'constructor'
|
||||
)),
|
||||
line INTEGER NOT NULL,
|
||||
line_end INTEGER,
|
||||
col INTEGER,
|
||||
col_end INTEGER,
|
||||
exported BOOLEAN,
|
||||
parent_id INTEGER REFERENCES symbols(id),
|
||||
UNIQUE(file_id, name, kind, line)
|
||||
CREATE TABLE IF NOT EXISTS symbols (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file_id INTEGER NOT NULL REFERENCES files (id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
kind TEXT NOT NULL CHECK (
|
||||
kind IN (
|
||||
'function',
|
||||
'method',
|
||||
'class',
|
||||
'type',
|
||||
'reference',
|
||||
'interface',
|
||||
'constant',
|
||||
'variable',
|
||||
'constructor'
|
||||
)
|
||||
),
|
||||
line INTEGER NOT NULL,
|
||||
line_end INTEGER,
|
||||
col INTEGER,
|
||||
col_end INTEGER,
|
||||
exported BOOLEAN,
|
||||
parent_id INTEGER REFERENCES symbols (id),
|
||||
UNIQUE (file_id, name, kind, line)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_symbols_name ON symbols(name);
|
||||
CREATE INDEX idx_symbols_kind ON symbols(kind);
|
||||
CREATE INDEX idx_symbols_file_line ON symbols(file_id, line);
|
||||
CREATE INDEX idx_symbols_parent ON symbols(parent_id);
|
||||
CREATE INDEX idx_symbols_exported ON symbols(exported, kind);
|
||||
CREATE INDEX idx_files_path ON files(path);
|
||||
CREATE INDEX idx_files_language ON files(language);
|
||||
CREATE INDEX idx_files_package ON files(package);
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_name ON symbols (name);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_kind ON symbols (kind);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_file_line ON symbols (file_id, line);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_parent ON symbols (parent_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_exported ON symbols (exported, kind);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_path ON files (path);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_language ON files (LANGUAGE);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_package ON files (package);
|
||||
|
||||
-- FTS5 virtual table for full-text search of file contents.
|
||||
-- content is stored here (not external content), keyed by file_id.
|
||||
CREATE VIRTUAL TABLE file_contents USING fts5(
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS file_contents USING fts5 (
|
||||
file_id UNINDEXED,
|
||||
content,
|
||||
tokenize='porter unicode61'
|
||||
tokenize = 'porter unicode61'
|
||||
);
|
||||
|
||||
@@ -1,42 +1,58 @@
|
||||
CREATE TABLE files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
path TEXT NOT NULL UNIQUE,
|
||||
language TEXT NOT NULL,
|
||||
package TEXT,
|
||||
hash TEXT NOT NULL,
|
||||
indexed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
CREATE TABLE IF NOT EXISTS files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
path TEXT NOT NULL UNIQUE,
|
||||
LANGUAGE TEXT NOT NULL,
|
||||
package TEXT,
|
||||
hash TEXT NOT NULL,
|
||||
indexed_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE symbols (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file_id INTEGER NOT NULL REFERENCES files(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
kind TEXT NOT NULL CHECK(kind IN (
|
||||
'function', 'method', 'class', 'type',
|
||||
'interface', 'constant', 'variable', 'constructor'
|
||||
)),
|
||||
line INTEGER NOT NULL,
|
||||
line_end INTEGER,
|
||||
col INTEGER,
|
||||
col_end INTEGER,
|
||||
exported BOOLEAN,
|
||||
parent_id INTEGER REFERENCES symbols(id),
|
||||
UNIQUE(file_id, name, kind, line)
|
||||
CREATE TABLE IF NOT EXISTS symbols (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file_id INTEGER NOT NULL REFERENCES files (id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
kind TEXT NOT NULL CHECK (
|
||||
kind IN (
|
||||
'function',
|
||||
'method',
|
||||
'class',
|
||||
'type',
|
||||
'reference',
|
||||
'interface',
|
||||
'constant',
|
||||
'variable',
|
||||
'constructor'
|
||||
)
|
||||
),
|
||||
line INTEGER NOT NULL,
|
||||
line_end INTEGER,
|
||||
col INTEGER,
|
||||
col_end INTEGER,
|
||||
exported BOOLEAN,
|
||||
parent_id INTEGER REFERENCES symbols (id),
|
||||
UNIQUE (file_id, name, kind, line)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_symbols_name ON symbols(name);
|
||||
CREATE INDEX idx_symbols_kind ON symbols(kind);
|
||||
CREATE INDEX idx_symbols_file_line ON symbols(file_id, line);
|
||||
CREATE INDEX idx_symbols_parent ON symbols(parent_id);
|
||||
CREATE INDEX idx_symbols_exported ON symbols(exported, kind);
|
||||
CREATE INDEX idx_files_path ON files(path);
|
||||
CREATE INDEX idx_files_language ON files(language);
|
||||
CREATE INDEX idx_files_package ON files(package);
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_name ON symbols (name);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_kind ON symbols (kind);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_file_line ON symbols (file_id, line);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_parent ON symbols (parent_id);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_exported ON symbols (exported, kind);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_path ON files (path);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_language ON files (LANGUAGE);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_files_package ON files (package);
|
||||
|
||||
-- FTS5 virtual table for full-text search of file contents.
|
||||
-- content is stored here (not external content), keyed by file_id.
|
||||
CREATE VIRTUAL TABLE file_contents USING fts5(
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS file_contents USING fts5 (
|
||||
file_id UNINDEXED,
|
||||
content,
|
||||
tokenize='porter unicode61'
|
||||
tokenize = 'porter unicode61'
|
||||
);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
go
|
||||
gopls
|
||||
gnumake
|
||||
];
|
||||
};
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
"codexis/db"
|
||||
)
|
||||
|
||||
|
||||
// ProgressFunc is called for each file being processed.
|
||||
// current is the 1-based index, total is the total file count, path is the file being processed.
|
||||
type ProgressFunc func(current, total int, path string)
|
||||
@@ -260,7 +259,7 @@ func buildSymbolDefs(tags []gotreesitter.Tag, fileID int64, langName string) []s
|
||||
for _, tag := range tags {
|
||||
kind := tagKind(tag.Kind)
|
||||
if kind == "" {
|
||||
continue // skip references and unknown kinds
|
||||
continue
|
||||
}
|
||||
|
||||
exported := IsExported(tag.Name, langName)
|
||||
@@ -307,5 +306,9 @@ func tagKind(kind string) string {
|
||||
if strings.HasPrefix(kind, prefix) {
|
||||
return kind[len(prefix):]
|
||||
}
|
||||
if kind == "reference.call" {
|
||||
return "reference"
|
||||
}
|
||||
fmt.Println(kind)
|
||||
return ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user