@@ -11,6 +11,7 @@ import (
1111 "github.com/mstgnz/sqlmapper/postgres"
1212 "github.com/mstgnz/sqlmapper/sqlite"
1313 "github.com/mstgnz/sqlmapper/sqlserver"
14+ "github.com/mstgnz/sqlmapper/stream"
1415)
1516
1617// DatabaseType represents supported database types
@@ -92,7 +93,55 @@ func (c *Converter) Convert(sourceType, targetType DatabaseType, content string)
9293 return result , nil
9394}
9495
96+ // StreamExample demonstrates stream parsing functionality
97+ func StreamExample () {
98+ // Create MySQL stream parser
99+ parser := mysql .NewMySQLStreamParser ()
100+
101+ // Open source file
102+ file , err := os .Open ("examples/files/mysql.sql" )
103+ if err != nil {
104+ log .Fatalf ("Failed to open file: %v" , err )
105+ }
106+ defer file .Close ()
107+
108+ // Parse stream and handle objects
109+ err = parser .ParseStream (file , func (obj stream.SchemaObject ) error {
110+ switch obj .Type {
111+ case stream .TableObject :
112+ if table , ok := obj .Data .(* sqlmapper.Table ); ok {
113+ fmt .Printf ("Found table: %s\n " , table .Name )
114+ }
115+ case stream .ViewObject :
116+ if view , ok := obj .Data .(* sqlmapper.View ); ok {
117+ fmt .Printf ("Found view: %s\n " , view .Name )
118+ }
119+ case stream .FunctionObject :
120+ if function , ok := obj .Data .(* sqlmapper.Function ); ok {
121+ fmt .Printf ("Found function: %s\n " , function .Name )
122+ }
123+ case stream .ProcedureObject :
124+ if procedure , ok := obj .Data .(* sqlmapper.Procedure ); ok {
125+ fmt .Printf ("Found procedure: %s\n " , procedure .Name )
126+ }
127+ case stream .TriggerObject :
128+ if trigger , ok := obj .Data .(* sqlmapper.Trigger ); ok {
129+ fmt .Printf ("Found trigger: %s\n " , trigger .Name )
130+ }
131+ }
132+ return nil
133+ })
134+
135+ if err != nil {
136+ log .Fatalf ("Stream parsing error: %v" , err )
137+ }
138+ }
139+
95140func main () {
141+ // Stream parsing example
142+ fmt .Println ("\n === Stream Parsing Example ===" )
143+ StreamExample ()
144+
96145 converter := NewConverter ()
97146
98147 // Example conversions
0 commit comments