@@ -27,7 +27,7 @@ let adapter, repository;
2727
2828function initDatabase ( ) {
2929 adapter = new Gom . Adapter ( ) ;
30- adapter . open_sync ( ` ${ GLib . get_home_dir ( ) } /gom-js-workbench.db` ) ;
30+ adapter . open_sync ( ':memory:' , ) ;
3131 repository = new Gom . Repository ( { adapter : adapter } ) ;
3232
3333 ItemClass . set_table ( 'items' ) ;
@@ -56,6 +56,8 @@ const url_entry = workbench.builder.get_object("url_entry");
5656const id_entry = workbench . builder . get_object ( "id_entry" ) ;
5757const insert_button = workbench . builder . get_object ( "insert_button" ) ;
5858const find_button = workbench . builder . get_object ( "find_button" ) ;
59+ const filter_entry = workbench . builder . get_object ( "filter_entry" ) ;
60+ const filter_button = workbench . builder . get_object ( "filter_button" ) ;
5961const result_label = workbench . builder . get_object ( "result_label" ) ;
6062const overlay = workbench . builder . get_object ( "overlay" ) ;
6163
@@ -90,6 +92,38 @@ find_button.connect("clicked", () => {
9092
9193} ) ;
9294
95+ filter_button . connect ( "clicked" , ( ) => {
96+ data_model . remove_all ( ) ;
97+ const filter_text = filter_entry . text . trim ( ) ;
98+ if ( filter_text === "" ) {
99+ result_label . label = "Enter a value" ;
100+ return ;
101+ }
102+
103+ const filter = Gom . Filter . new_glob ( ItemClass , 'url' , `*${ filter_text } *` ) ;
104+ const filtered_items = repository . find_sync ( ItemClass , filter ) ;
105+
106+ if ( filtered_items ) {
107+ const count = filtered_items . get_count ( ) ;
108+ if ( count > 0 ) {
109+ filtered_items . fetch_async ( 0 , count , ( ) => {
110+ for ( let i = 0 ; i < count ; i ++ ) {
111+ const item = filtered_items . get_index ( i ) ;
112+ if ( item ) {
113+ data_model . append ( item ) ;
114+ }
115+ }
116+ result_label . label = "Loaded successfully" ;
117+ } ) ;
118+ } else {
119+ result_label . label = "No matching items found" ;
120+ }
121+ } else {
122+ result_label . label = "No matching items found" ;
123+ }
124+ } ) ;
125+
126+
93127const factory_col1 = col1 . factory ;
94128factory_col1 . connect ( "setup" , ( _self , list_item ) => {
95129 const label = new Gtk . Label ( {
0 commit comments