@@ -128,9 +128,11 @@ INSERT INTO Snippets (CategoryId, Title, Code, Description, Tag)
128128
129129 public IEnumerable < Language > GetSnippets ( )
130130 {
131- using var conn = CreateConnection ( ) ;
131+ try
132+ {
133+ using var conn = CreateConnection ( ) ;
132134
133- var sql = @"
135+ var sql = @"
134136 SELECT
135137 L.ID AS LanguageID,
136138 L.Code AS LanguageCode,
@@ -151,61 +153,67 @@ FROM Languages L
151153LEFT JOIN Snippets S ON S.CategoryId = C.ID
152154ORDER BY L.Name, C.Name, S.Title" ;
153155
154- var lookup = new Dictionary < int , Language > ( ) ;
155- //var result = conn.Query(sql).ToList();
156- var result = conn . Query < dynamic > ( sql ) . ToList ( ) ;
156+ var lookup = new Dictionary < int , Language > ( ) ;
157+ //var result = conn.Query(sql).ToList();
158+ var result = conn . Query < dynamic > ( sql ) . ToList ( ) ;
157159
158- foreach ( var row in result )
159- {
160- // Find or create a language
161- int langId = ( int ) row . LanguageID ;
162- if ( ! lookup . TryGetValue ( langId , out var language ) )
163- {
164- language = new Language
165- {
166- Id = langId ,
167- Code = ( string ) row . LanguageCode ,
168- Name = ( string ) row . LanguageName ,
169- Categories = new ObservableCollection < Category > ( ) // Collection initialization
170- } ;
171- lookup . Add ( langId , language ) ;
172- }
173- // Pronađi ili kreiraj kategoriju
174- if ( row . CategoryID != null )
160+ foreach ( var row in result )
175161 {
176- int catId = ( int ) row . CategoryID ;
177- var category = language . Categories . FirstOrDefault ( c => c . Id == catId ) ;
178- if ( category == null )
162+ // Find or create a language
163+ int langId = ( int ) row . LanguageID ;
164+ if ( ! lookup . TryGetValue ( langId , out var language ) )
179165 {
180- category = new Category
166+ language = new Language
181167 {
182- Id = catId ,
183- LanguageId = ( int ) row . CategoryLanguageId ,
184- Name = ( string ) row . CategoryName ,
185- Language = language ,
186- Snippets = new ObservableCollection < Snippet > ( ) // Collection initialization
168+ Id = langId ,
169+ Code = ( string ) row . LanguageCode ,
170+ Name = ( string ) row . LanguageName ,
171+ Categories = new ObservableCollection < Category > ( ) // Collection initialization
187172 } ;
188- language . Categories . Add ( category ) ;
173+ lookup . Add ( langId , language ) ;
189174 }
190- // Find or create a snippet
191- if ( row . SnippetID != null )
175+ // Find or create a category
176+ if ( row . CategoryID != null )
192177 {
193- var snippet = new Snippet
178+ int catId = ( int ) row . CategoryID ;
179+ var category = language . Categories . FirstOrDefault ( c => c . Id == catId ) ;
180+ if ( category == null )
194181 {
195- Id = ( int ) row . SnippetID ,
196- CategoryId = ( int ) row . SnippetCategoryId ,
197- Title = ( string ) row . SnippetTitle ,
198- //Code = (string)row.SnippetCode,
199- Code = string . Empty , // Initially empty
200- Description = ( string ) row . SnippetDescription ,
201- Tag = ( string ) row . SnippetTag ,
202- Category = category
203- } ;
204- category . Snippets . Add ( snippet ) ;
182+ category = new Category
183+ {
184+ Id = catId ,
185+ LanguageId = ( int ) row . CategoryLanguageId ,
186+ Name = ( string ) row . CategoryName ,
187+ Language = language ,
188+ Snippets = new ObservableCollection < Snippet > ( ) // Collection initialization
189+ } ;
190+ language . Categories . Add ( category ) ;
191+ }
192+ // Find or create a snippet
193+ if ( row . SnippetID != null )
194+ {
195+ var snippet = new Snippet
196+ {
197+ Id = ( int ) row . SnippetID ,
198+ CategoryId = ( int ) row . SnippetCategoryId ,
199+ Title = ( string ) row . SnippetTitle ,
200+ //Code = (string)row.SnippetCode,
201+ Code = string . Empty , // Initially empty
202+ Description = ( string ) row . SnippetDescription ,
203+ Tag = ( string ) row . SnippetTag ,
204+ Category = category
205+ } ;
206+ category . Snippets . Add ( snippet ) ;
207+ }
205208 }
206209 }
210+ return lookup . Values ;
211+ }
212+ catch ( Exception ex )
213+ {
214+ System . Diagnostics . Debug . WriteLine ( $ "[FATAL] Failed to load snippets from database: { ex } ") ;
215+ return Enumerable . Empty < Language > ( ) ; // Return an empty list on failure
207216 }
208- return lookup . Values ;
209217 }
210218
211219 public string GetSnippetCode ( int snippetId )
0 commit comments