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