@@ -7,24 +7,118 @@ import (
77 "github.com/kyleconroy/sqlc/internal/sql/catalog"
88)
99
10- func pluginSettings (settings config.CombinedSettings ) * plugin.Settings {
11- return nil
10+ func pluginSettings (cs config.CombinedSettings ) * plugin.Settings {
11+ var over []* plugin.Override
12+ for _ , o := range cs .Overrides {
13+ over = append (over , & plugin.Override {
14+ CodeType : "" , // FIXME
15+ DbType : o .DBType ,
16+ Nullable : o .Nullable ,
17+ Column : o .Column ,
18+ })
19+ }
20+ return & plugin.Settings {
21+ Version : cs .Global .Version ,
22+ Engine : string (cs .Package .Engine ),
23+ Schema : []string (cs .Package .Schema ),
24+ Queries : []string (cs .Package .Queries ),
25+ Overrides : over ,
26+ Rename : cs .Rename ,
27+ }
1228}
1329
1430func pluginCatalog (c * catalog.Catalog ) * plugin.Catalog {
15- return nil
31+ var schemas []* plugin.Schema
32+ for _ , s := range c .Schemas {
33+ var enums []* plugin.Enum
34+ for _ , typ := range s .Types {
35+ enum , ok := typ .(* catalog.Enum )
36+ if ! ok {
37+ continue
38+ }
39+ enums = append (enums , & plugin.Enum {
40+ Name : enum .Name ,
41+ Comment : enum .Comment ,
42+ Vals : enum .Vals ,
43+ })
44+ }
45+ var tables []* plugin.Table
46+ for _ , t := range s .Tables {
47+ var columns []* plugin.Column
48+ for _ , c := range t .Columns {
49+ l := - 1
50+ if c .Length != nil {
51+ l = * c .Length
52+ }
53+ columns = append (columns , & plugin.Column {
54+ Name : c .Name ,
55+ Comment : c .Comment ,
56+ NotNull : c .IsNotNull ,
57+ IsArray : c .IsArray ,
58+ Length : int32 (l ),
59+ })
60+ }
61+ tables = append (tables , & plugin.Table {
62+ Rel : & plugin.Identifier {
63+ Catalog : t .Rel .Catalog ,
64+ Schema : t .Rel .Schema ,
65+ Name : t .Rel .Name ,
66+ },
67+ Columns : columns ,
68+ Comment : t .Comment ,
69+ })
70+ }
71+ schemas = append (schemas , & plugin.Schema {
72+ Comment : s .Comment ,
73+ Name : s .Name ,
74+ Tables : tables ,
75+ Enums : enums ,
76+ })
77+ }
78+ return & plugin.Catalog {
79+ Name : c .Name ,
80+ DefaultSchema : c .DefaultSchema ,
81+ Comment : c .Comment ,
82+ Schemas : schemas ,
83+ }
1684}
1785
1886func pluginQueries (r * compiler.Result ) []* plugin.Query {
1987 var out []* plugin.Query
2088 for _ , q := range r .Queries {
89+ var params []* plugin.Parameter
90+ var columns []* plugin.Column
91+ for _ , c := range q .Columns {
92+ columns = append (columns , pluginQueryColumn (c ))
93+ }
94+ for _ , p := range q .Params {
95+ params = append (params , pluginQueryParam (p ))
96+ }
2197 out = append (out , & plugin.Query {
22- Text : q .SQL ,
98+ Name : q .Name ,
99+ Cmd : q .Cmd ,
100+ Text : q .SQL ,
101+ Comments : q .Comments ,
102+ Columns : columns ,
103+ Params : params ,
23104 })
24105 }
25106 return out
26107}
27108
109+ func pluginQueryColumn (c * compiler.Column ) * plugin.Column {
110+ return & plugin.Column {
111+ Name : c .Name ,
112+ }
113+ }
114+
115+ func pluginQueryParam (p compiler.Parameter ) * plugin.Parameter {
116+ return & plugin.Parameter {
117+ Number : int32 (p .Number ),
118+ Column : pluginQueryColumn (p .Column ),
119+ }
120+ }
121+
28122func codeGenRequest (r * compiler.Result , settings config.CombinedSettings ) * plugin.CodeGenRequest {
29123 return & plugin.CodeGenRequest {
30124 Settings : pluginSettings (settings ),
0 commit comments