| 126 | } |
| 127 | |
| 128 | func GetTablesFromWorld(db database.DatabaseConnection) ([]table_info.TableInfo, error) { |
| 129 | |
| 130 | ts := make([]table_info.TableInfo, 0) |
| 131 | |
| 132 | sql, args, err := statementbuilder.Squirrel. |
| 133 | Select("table_name", "permission", |
| 134 | "world_schema_json", "is_top_level", "is_hidden", "is_state_tracking_enabled", "default_order", "icon", |
| 135 | ).Prepared(true). |
| 136 | From("world"). |
| 137 | Where(goqu.Ex{ |
| 138 | "table_name": goqu.Op{ |
| 139 | "notlike": "%_has_%", |
| 140 | }, |
| 141 | }). |
| 142 | Where(goqu.Ex{ |
| 143 | "table_name": goqu.Op{ |
| 144 | "notlike": "%_audit", |
| 145 | }, |
| 146 | }). |
| 147 | Where(goqu.Ex{ |
| 148 | "table_name": goqu.Op{ |
| 149 | "notin": []string{"world", "action", "usergroup"}, |
| 150 | }, |
| 151 | }). |
| 152 | ToSQL() |
| 153 | if err != nil { |
| 154 | return nil, err |
| 155 | } |
| 156 | |
| 157 | stmt1, err := db.Preparex(sql) |
| 158 | if err != nil { |
| 159 | log.Errorf("[106] failed to prepare statment: %v", err) |
| 160 | return nil, err |
| 161 | } |
| 162 | |
| 163 | defer func(stmt1 *sqlx.Stmt) { |
| 164 | err := stmt1.Close() |
| 165 | if err != nil { |
| 166 | log.Errorf("failed to close prepared statement: %v", err) |
| 167 | } |
| 168 | }(stmt1) |
| 169 | |
| 170 | res, err := stmt1.Queryx(args...) |
| 171 | if err != nil { |
| 172 | log.Printf("Failed to select from world table: %v", err) |
| 173 | return ts, err |
| 174 | } |
| 175 | defer res.Close() |
| 176 | for res.Next() { |
| 177 | var table_name string |
| 178 | var permission int64 |
| 179 | var world_schema_json string |
| 180 | var default_order string |
| 181 | var icon string |
| 182 | var is_top_level bool |
| 183 | var is_hidden bool |
| 184 | var is_state_tracking_enabled bool |
| 185 | |