Skip to content

Commit 9a66554

Browse files
committed
getproperty overloading
1 parent d210e8b commit 9a66554

3 files changed

Lines changed: 14 additions & 18 deletions

File tree

src/library.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function get_column(source_row, column_name)
2828
SourceCode(source_row.source, Expr(:call, getproperty, source_row, column_name))
2929
end
3030
function model_row_dispatch(::typeof(getproperty), source_tables::SourceTables, table_name)
31-
source = source_tables.source
31+
source = get_source(source_tables)
3232
column_names = get_column_names(source, table_name)
3333
NamedTuple{column_names}(partial_map(
3434
get_column,

src/source.jl

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,24 @@ function get_column_names(source::DB, table_name)
2323
end
2424
export get_column_names
2525

26+
27+
"""
28+
struct SourceTables{Source}
29+
30+
`source` must support [`get_table_names`](@ref) and [`get_column_names`](@ref).
31+
"""
2632
struct SourceTables{Source}
2733
source::Source
2834
end
35+
export SourceTables
2936

30-
function get_table(source, table_name::Symbol)
31-
SourceCode(source,
32-
Expr(:call, getproperty, SourceTables(source), table_name)
33-
)
34-
end
35-
36-
"""
37-
get_tables(source)
37+
get_source(source_tables::SourceTables) = getfield(source_tables, :source)
3838

39-
`source` must support [`get_table_names`](@ref).
40-
"""
41-
function get_tables(source)
42-
table_names = get_table_names(source)
43-
NamedTuple{table_names}(
44-
partial_map(get_table, source, table_names)
39+
function getproperty(source_tables::SourceTables, table_name::Symbol)
40+
SourceCode(get_source(source_tables),
41+
Expr(:call, getproperty, source_tables, table_name)
4542
)
4643
end
47-
export get_tables
4844

4945
struct SourceRow{Source}
5046
source::Source

test/runtests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using Query
22
using Test
3-
using QuerySQLite
3+
using QuerySQLite: SourceTables
44
using SQLite: DB
55
using QueryTables
66

77
filename = joinpath(@__DIR__, "Chinook_Sqlite.sqlite")
8-
database = get_tables(DB(filename))
8+
database = SourceTables(DB(filename))
99

1010
@testset "QuerySQLite" begin
1111

0 commit comments

Comments
 (0)