├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── ---bug-report.md │ ├── ---feature-request.md │ └── config.yml ├── .gitignore ├── .metadata ├── LICENSE ├── README.md ├── analysis_options.yaml ├── images ├── bmc-button.png └── recording.gif ├── lib ├── config │ ├── constants.dart │ └── responsive.dart ├── main.dart ├── models │ └── command_type.dart ├── pages │ └── home_page.dart ├── services │ └── database_service.dart └── widgets │ ├── output_widget.dart │ └── radio_button_widget.dart ├── pubspec.lock ├── pubspec.yaml └── web ├── favicon.ico ├── icons ├── android-icon-144x144.png ├── android-icon-192x192.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── apple-icon-precomposed.png ├── apple-icon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png └── ms-icon-70x70.png ├── index.html ├── manifest.json ├── sqflite_sw.js └── sqlite3.wasm /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ['https://www.buymeacoffee.com/aditluhadia'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/---bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F41B Bug report" 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/---feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "\U0001F680 Feature request" 3 | about: Suggest an idea for this project 4 | title: "[FEATURE REQUEST]" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: ❓ Question 4 | url: https://github.com/masteradit/AllSQL/discussions 5 | about: Create a new Discussion on GitHub -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Symbolication related 35 | app.*.symbols 36 | 37 | # Obfuscation related 38 | app.*.map.json 39 | 40 | # Android Studio will place build artifacts here 41 | /android/app/debug 42 | /android/app/profile 43 | /android/app/release 44 | 45 | # Local Netlify folder 46 | .netlify -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "ba393198430278b6595976de84fe170f553cc728" 8 | channel: "stable" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: ba393198430278b6595976de84fe170f553cc728 17 | base_revision: ba393198430278b6595976de84fe170f553cc728 18 | - platform: web 19 | create_revision: ba393198430278b6595976de84fe170f553cc728 20 | base_revision: ba393198430278b6595976de84fe170f553cc728 21 | 22 | # User provided section 23 | 24 | # List of Local paths (relative to this file) that should be 25 | # ignored by the migrate tool. 26 | # 27 | # Files that are not part of the templates will be ignored by default. 28 | unmanaged_files: 29 | - 'lib/main.dart' 30 | - 'ios/Runner.xcodeproj/project.pbxproj' 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Adit Luhadia 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 6 | 7 |

AllSQL

8 | 9 |

10 | An open-source compact browser-based SQL Compiler, built using Flutter. 11 |
12 | Website 13 | · 14 | Issues 15 | · 16 | Pull Requests 17 | · 18 | Discussions 19 |

20 |

21 | 22 |

23 | 24 | GitHub Stars 25 | 26 | GitHub Forks 27 | 28 | GitHub Forks 29 | 30 | License 31 | 32 | Style 33 | 34 | Repo Size 35 | 36 | GitHub Open Issues 37 | 38 | GitHub Closed Issues 39 | 40 | GitHub Open Pull Requests 41 | 42 | GitHub Closed Pull Requests 43 | 44 | Commits Per Year 45 | 46 | Last Commit 47 | 48 | Pricing 49 | 50 | GitHub Release 51 | 52 | GitHub Contributors 53 | 54 | GitHub Watchers 55 | 56 | Netlify Deploys 57 | 58 | 59 | 60 | 61 |

62 | 63 |

64 | 65 | Follow @masteradit 66 | 67 | 68 | 69 | 70 | Watch 71 | 72 | Star 73 | 74 | Fork 75 | 76 | Issue 77 | 78 | Discuss 79 | 80 | Download 81 | 82 |

83 | 84 | ## ✨ Demo 85 | 86 | Website: https://sql.allmityapp.com 87 | 88 | AllSQL Demo GIF 89 | 90 | ## ⚡ Features 91 | 92 | - ✅ Server is not required 93 | - ✅ Output is neatly formatted in the form of a table 94 | - ✅ Helper text to explain the use of each option with example 95 | - ✅ Very small size (< 6 MB) 96 | - ✅ Works on web 97 | - ✅ Can be installed as a Progressive Web App on Android, iOS, Windows, MacOS and Linux 98 | - ✅ Works offline 99 | - ✅ Responsive design (works on all screen sizes) 100 | - ✅ Shows a detailed error when an exception is thrown 101 | 102 | ## 🐛 Known issues/bugs 103 | 104 | - ❗ Automatically execute commands instead of selecting the type of command manually 105 | - ❗ Show multiple tables in output if multiple select queries are entered 106 | - ❗ Add dark theme 107 | - ❗ Add syntax highlighting 108 | 109 | ## 🤔 Why did I make AllSQL? 110 | 111 | I created AllSQL when I was in college. I had a Database Systems course in college, where our teacher recommended us to download Oracle Database 19c, which is around 2.7 GB in size. Some of my friends faced issues while installing the software. So, I wanted to make a ligh weight, compact, browser based compiler, where anyone could practice SQL commands, on any device without installing a heavy software, which would also work offline so that we could use it during our lab exams as well. Thus, I sat down one night and challenged myself to build an SQL compiler before the next morning that would match all the constraints. 112 | 113 | ## 👏 Getting Started 114 | 115 | This project is a starting point for a Flutter application. 116 | 117 | A few resources to get you started if this is your first Flutter project: 118 | 119 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 120 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 121 | 122 | For help getting started with Flutter development, view the 123 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 124 | samples, guidance on mobile development, and a full API reference. 125 | 126 | ### Initial Setup 127 | 128 | 1. Clone the repo. 129 | 2. Run `flutter pub get`. This will get all the dependencies for this project. 130 | 3. Run `dart run sqflite_common_ffi_web:setup`. This will create 2 files `sqlite3.wasm` and `sqflite_sw.js`. 131 | > Note: when sqlite3 and its wasm binary are updated, you may need to run the command again using the force option: `dart run sqflite_common_ffi_web:setup --force` 132 | 133 | > However since it depends on sqflite3 version and its associated binary, if it gets updated and the tool still download the old version (sorry it is hardcoded) you might have to manually download a compatible binary from sqlite3.wasm binaries I don't have a better option yet, sorry. 134 | 135 | > *Source: https://pub.dev/packages/sqflite_common_ffi_web#setup-binaries* 136 | 137 | ## 📚 Documentation 138 | 139 | - Website: https://docs.sql.allmityapp.com/ 140 | - GitHub repository: https://github.com/masteradit/AllSQL-Docs 141 | 142 | ## 🙏 Show your support 143 | 144 | Please ⭐️ this repository if this project helped you! 145 | 146 | Buy me a coffee 147 | 148 | 149 | ## 👥 Contributors 150 | 151 | 152 | 153 | 154 | 155 | Made with [contributors-img](https://contrib.rocks). 156 | 157 | 160 | 161 | ## ⭐️ Stargazers over time 162 | 163 | [![Stargazers over time](https://starchart.cc/masteradit/AllSQL.svg)](https://starchart.cc/masteradit/AllSQL) 164 | 165 | ## 📝 License 166 | 167 | Copyright © 2021 [Adit Luhadia](https://github.com/masteradit). 168 | 169 | This project is [MIT](https://github.com/masteradit/AllSQL/blob/master/LICENSE) licensed. 170 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:lint/strict.yaml 2 | 3 | linter: 4 | rules: 5 | always_use_package_imports: false 6 | prefer_relative_imports: true 7 | prefer_single_quotes: true 8 | avoid_classes_with_only_static_members: false 9 | -------------------------------------------------------------------------------- /images/bmc-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/images/bmc-button.png -------------------------------------------------------------------------------- /images/recording.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/images/recording.gif -------------------------------------------------------------------------------- /lib/config/constants.dart: -------------------------------------------------------------------------------- 1 | import '../models/command_type.dart'; 2 | 3 | class Constants { 4 | static const Map descriptions = { 5 | CommandType.execute: 6 | 'Execute an SQL query with no return value.\n\nFor example:\nCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, value INTEGER);', 7 | CommandType.insert: 8 | "Execute an SQL INSERT query and show the last inserted row ID\n\nFor example:\nINSERT INTO users(name, value) VALUES('Adit', 1234);", 9 | CommandType.query: 10 | 'Execute an SQL SELECT query and show the output.\n\nFor example:\nSELECT * FROM users;', 11 | CommandType.update: 12 | "Execute an SQL UPDATE query and show the number of changes made.\n\nFor example:\nUPDATE users SET name = 'Adit Luhadia', value = 1234 WHERE name = 'Adit';", 13 | CommandType.delete: 14 | "Execute an SQL DELETE query and show the number of changes made.\n\nFor example:\nDELETE FROM users WHERE name = 'Adit';", 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /lib/config/responsive.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Responsive extends StatelessWidget { 4 | final Widget mobile; 5 | final Widget? tablet; 6 | final Widget desktop; 7 | 8 | const Responsive({ 9 | super.key, 10 | required this.mobile, 11 | this.tablet, 12 | required this.desktop, 13 | }); 14 | 15 | static bool isMobile(BuildContext context) => 16 | MediaQuery.of(context).size.width < 850; 17 | 18 | static bool isTablet(BuildContext context) => 19 | MediaQuery.of(context).size.width < 1100 && 20 | MediaQuery.of(context).size.width >= 850; 21 | 22 | static bool isDesktop(BuildContext context) => 23 | MediaQuery.of(context).size.width >= 1100; 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | final Size size = MediaQuery.of(context).size; 28 | 29 | if (size.width >= 1100) { 30 | return desktop; 31 | } else if (size.width >= 850 && tablet != null) { 32 | return tablet!; 33 | } else { 34 | return mobile; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'pages/home_page.dart'; 4 | 5 | void main() { 6 | runApp(const AllSqlApp()); 7 | } 8 | 9 | class AllSqlApp extends StatelessWidget { 10 | const AllSqlApp({super.key}); 11 | 12 | @override 13 | Widget build(BuildContext context) { 14 | return MaterialApp( 15 | title: 'AllSQL', 16 | theme: ThemeData( 17 | colorScheme: ColorScheme.fromSeed(seedColor: Colors.teal), 18 | useMaterial3: true, 19 | ), 20 | home: const HomePage(), 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/models/command_type.dart: -------------------------------------------------------------------------------- 1 | enum CommandType { 2 | execute, 3 | insert, 4 | query, 5 | update, 6 | delete, 7 | } 8 | -------------------------------------------------------------------------------- /lib/pages/home_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import '../config/constants.dart'; 4 | import '../config/responsive.dart'; 5 | import '../models/command_type.dart'; 6 | import '../services/database_service.dart'; 7 | import '../widgets/output_widget.dart'; 8 | import '../widgets/radio_button_widget.dart'; 9 | 10 | class HomePage extends StatefulWidget { 11 | const HomePage({super.key}); 12 | 13 | @override 14 | State createState() => _HomePageState(); 15 | } 16 | 17 | class _HomePageState extends State { 18 | final DatabaseService _db = DatabaseService(); 19 | final _formKey = GlobalKey(); 20 | final _commandController = TextEditingController(); 21 | CommandType? _commandType = CommandType.execute; 22 | Widget? _output; 23 | 24 | @override 25 | void dispose() { 26 | _commandController.dispose(); 27 | super.dispose(); 28 | } 29 | 30 | @override 31 | Widget build(BuildContext context) { 32 | return Scaffold( 33 | appBar: AppBar( 34 | title: const Text('AllSQL'), 35 | ), 36 | body: Form( 37 | key: _formKey, 38 | child: ListView( 39 | padding: Responsive.isDesktop(context) || Responsive.isTablet(context) 40 | ? EdgeInsets.symmetric( 41 | vertical: 20.0, 42 | horizontal: MediaQuery.of(context).size.width * 0.1, 43 | ) 44 | : const EdgeInsets.all(20.0), 45 | children: [ 46 | TextFormField( 47 | controller: _commandController, 48 | minLines: 4, 49 | maxLines: 10, 50 | validator: (value) { 51 | if (value == null || value.isEmpty) { 52 | return 'Please enter your SQL command'; 53 | } 54 | 55 | return null; 56 | }, 57 | decoration: const InputDecoration( 58 | labelText: 'Enter your SQL command', 59 | border: OutlineInputBorder(), 60 | ), 61 | ), 62 | const SizedBox(height: 20.0), 63 | Row( 64 | crossAxisAlignment: CrossAxisAlignment.start, 65 | children: [ 66 | Column( 67 | crossAxisAlignment: CrossAxisAlignment.start, 68 | children: [ 69 | RadioButton( 70 | value: CommandType.execute, 71 | label: 'Execute', 72 | groupValue: _commandType, 73 | onChanged: (value) => setState(() { 74 | _commandType = value; 75 | }), 76 | ), 77 | RadioButton( 78 | value: CommandType.insert, 79 | label: 'Insert', 80 | groupValue: _commandType, 81 | onChanged: (value) => setState(() { 82 | _commandType = value; 83 | }), 84 | ), 85 | RadioButton( 86 | value: CommandType.query, 87 | label: 'Query', 88 | groupValue: _commandType, 89 | onChanged: (value) => setState(() { 90 | _commandType = value; 91 | }), 92 | ), 93 | RadioButton( 94 | value: CommandType.update, 95 | label: 'Update', 96 | groupValue: _commandType, 97 | onChanged: (value) => setState(() { 98 | _commandType = value; 99 | }), 100 | ), 101 | RadioButton( 102 | value: CommandType.delete, 103 | label: 'Delete', 104 | groupValue: _commandType, 105 | onChanged: (value) => setState(() { 106 | _commandType = value; 107 | }), 108 | ), 109 | ], 110 | ), 111 | const SizedBox(width: 20.0), 112 | Expanded( 113 | child: Container( 114 | padding: const EdgeInsets.all(20.0), 115 | decoration: BoxDecoration( 116 | color: Theme.of(context).colorScheme.secondaryContainer, 117 | borderRadius: BorderRadius.circular(10.0), 118 | ), 119 | child: SelectableText( 120 | Constants.descriptions[_commandType] ?? 'Error!', 121 | style: TextStyle( 122 | color: Theme.of(context).colorScheme.secondary, 123 | ), 124 | ), 125 | ), 126 | ), 127 | ], 128 | ), 129 | const SizedBox(height: 20.0), 130 | Center( 131 | child: ElevatedButton.icon( 132 | onPressed: () async { 133 | if (!_formKey.currentState!.validate() || 134 | _commandType == null) { 135 | return; 136 | } 137 | 138 | try { 139 | switch (_commandType!) { 140 | case CommandType.execute: 141 | await _db.execute(_commandController.text); 142 | setState(() { 143 | _output = const OutputWidget.execute(); 144 | }); 145 | case CommandType.query: 146 | final queryResult = 147 | await _db.query(_commandController.text); 148 | setState(() { 149 | _output = 150 | OutputWidget.query(queryResult: queryResult); 151 | }); 152 | case CommandType.insert: 153 | final lastRowId = 154 | await _db.insert(_commandController.text); 155 | setState(() { 156 | _output = OutputWidget.insert(lastRowId: lastRowId); 157 | }); 158 | case CommandType.update: 159 | final rowsUpdated = 160 | await _db.update(_commandController.text); 161 | setState(() { 162 | _output = 163 | OutputWidget.update(rowsUpdated: rowsUpdated); 164 | }); 165 | case CommandType.delete: 166 | final rowsDeleted = 167 | await _db.delete(_commandController.text); 168 | setState(() { 169 | _output = 170 | OutputWidget.delete(rowsDeleted: rowsDeleted); 171 | }); 172 | } 173 | } catch (e) { 174 | setState(() { 175 | _output = Text(e.toString()); 176 | }); 177 | } 178 | }, 179 | icon: const Icon(Icons.play_circle_outline), 180 | label: const Text('RUN'), 181 | ), 182 | ), 183 | const SizedBox(height: 20.0), 184 | if (_output != null) 185 | Text( 186 | 'OUTPUT', 187 | style: Theme.of(context).textTheme.headlineSmall, 188 | ), 189 | if (_output != null) const SizedBox(height: 20.0), 190 | if (_output != null) _output!, 191 | ], 192 | ), 193 | ), 194 | ); 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /lib/services/database_service.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: avoid_dynamic_calls, prefer_typing_uninitialized_variables 2 | 3 | import 'package:flutter/foundation.dart'; 4 | import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart'; 5 | 6 | /// A service class to interact with the database. 7 | /// 8 | /// This class is responsible for opening the database, executing SQL commands, 9 | /// and closing the database. 10 | class DatabaseService { 11 | late final _factory; 12 | late final _db; 13 | 14 | DatabaseService() { 15 | _init(); 16 | } 17 | 18 | /// Initializes the database connection. 19 | /// 20 | /// This method sets the database factory to `databaseFactoryFfiWeb` and opens the database. 21 | /// It returns a `Future` that completes when the initialization is done. 22 | Future _init() async { 23 | _factory = databaseFactoryFfiWeb; 24 | await _openDatabase(); 25 | } 26 | 27 | /// Opens the database. 28 | Future _openDatabase() async { 29 | _db = await _factory.openDatabase('all_sql.db'); 30 | debugPrint('Database opened: $_db'); 31 | final sqliteVersion = 32 | ((await _db.rawQuery('SELECT SQLITE_VERSION()')) as List) 33 | .first 34 | .values 35 | .first; 36 | 37 | debugPrint('SQLite version: $sqliteVersion'); 38 | } 39 | 40 | /// 41 | /// Executes the given SQL command on the database. 42 | /// 43 | /// This method takes a SQL command as input and executes it on the underlying database. 44 | /// It returns a [Future] that completes when the execution is finished. 45 | /// 46 | /// Example usage: 47 | /// ```dart 48 | /// DatabaseService databaseService = DatabaseService(); 49 | /// await databaseService.execute('CREATE TABLE users (id INT, name TEXT)'); 50 | /// ``` 51 | Future execute(String command) async { 52 | await _db.execute(command); 53 | } 54 | 55 | /// Inserts a new record into the database using the provided SQL command. 56 | /// 57 | /// Returns the number of rows affected by the insert operation. 58 | /// 59 | /// The [command] parameter is the SQL command to be executed. 60 | /// 61 | /// Example usage: 62 | /// ```dart 63 | /// DatabaseService databaseService = DatabaseService(); 64 | /// await databaseService.insert('INSERT INTO users (id, name) VALUES (1, "Adit")'); 65 | /// ``` 66 | Future insert(String command) async { 67 | return await _db.rawInsert(command) as int; 68 | } 69 | 70 | /// Executes the given SQL command and returns a list of maps representing the result set. 71 | /// 72 | /// The [command] parameter is the SQL command to be executed. 73 | /// Returns a [Future] that completes with a list of maps, where each map represents a row in the result set. 74 | /// The keys in the map are column names, and the values are the corresponding column values. 75 | /// 76 | /// Example usage: 77 | /// ```dart 78 | /// DatabaseService databaseService = DatabaseService(); 79 | /// List> result = await databaseService.query('SELECT * FROM users'); 80 | /// ``` 81 | Future>> query(String command) async { 82 | return await _db.rawQuery(command) as List>; 83 | } 84 | 85 | /// Updates the database with the given [command]. 86 | /// Returns the number of rows affected by the update operation. 87 | /// 88 | /// The [command] parameter is the SQL command to be executed. 89 | /// 90 | /// Example usage: 91 | /// ```dart 92 | /// DatabaseService databaseService = DatabaseService(); 93 | /// await databaseService.update('UPDATE users SET name = "Adit Luhadia" WHERE id = 1'); 94 | /// ``` 95 | Future update(String command) async { 96 | return await _db.rawUpdate(command) as int; 97 | } 98 | 99 | /// Deletes data from the database based on the given command. 100 | /// 101 | /// Returns the number of rows affected by the delete operation. 102 | /// 103 | /// The [command] parameter is the SQL command to be executed. 104 | /// 105 | /// Example usage: 106 | /// ```dart 107 | /// DatabaseService databaseService = DatabaseService(); 108 | /// await databaseService.delete('DELETE FROM users WHERE id = 1'); 109 | /// ``` 110 | Future delete(String command) async { 111 | return await _db.rawDelete(command) as int; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /lib/widgets/output_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import '../models/command_type.dart'; 4 | 5 | class OutputWidget extends StatelessWidget { 6 | final int? lastRowId; 7 | final List>? queryResult; 8 | final int? rowsUpdated; 9 | final int? rowsDeleted; 10 | final CommandType commandType; 11 | 12 | const OutputWidget.execute() 13 | : lastRowId = null, 14 | queryResult = null, 15 | rowsUpdated = null, 16 | rowsDeleted = null, 17 | commandType = CommandType.execute; 18 | 19 | const OutputWidget.insert({required this.lastRowId}) 20 | : queryResult = null, 21 | rowsUpdated = null, 22 | rowsDeleted = null, 23 | commandType = CommandType.insert; 24 | 25 | const OutputWidget.query({required this.queryResult}) 26 | : lastRowId = null, 27 | rowsUpdated = null, 28 | rowsDeleted = null, 29 | commandType = CommandType.query; 30 | 31 | const OutputWidget.update({required this.rowsUpdated}) 32 | : lastRowId = null, 33 | queryResult = null, 34 | rowsDeleted = null, 35 | commandType = CommandType.update; 36 | 37 | const OutputWidget.delete({required this.rowsDeleted}) 38 | : lastRowId = null, 39 | queryResult = null, 40 | rowsUpdated = null, 41 | commandType = CommandType.delete; 42 | 43 | @override 44 | Widget build(BuildContext context) { 45 | switch (commandType) { 46 | case CommandType.execute: 47 | return const Text('Executed the command.'); 48 | case CommandType.insert: 49 | return Text('Last inserted row ID: $lastRowId'); 50 | case CommandType.query: 51 | if (queryResult!.isEmpty) { 52 | return const Text('No rows found.'); 53 | } 54 | 55 | return DataTable( 56 | columns: queryResult!.first.keys 57 | .map((e) => DataColumn(label: Text(e))) 58 | .toList(), 59 | rows: queryResult!.map((e) { 60 | return DataRow( 61 | cells: e.values.map((e) => DataCell(Text(e.toString()))).toList(), 62 | ); 63 | }).toList(), 64 | ); 65 | case CommandType.update: 66 | return Text('Number of rows updated: $rowsUpdated'); 67 | case CommandType.delete: 68 | return Text('Number of rows deleted: $rowsDeleted'); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /lib/widgets/radio_button_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class RadioButton extends StatelessWidget { 4 | final T value; 5 | final String label; 6 | final T? groupValue; 7 | final void Function(T?)? onChanged; 8 | 9 | const RadioButton({ 10 | super.key, 11 | required this.value, 12 | required this.label, 13 | this.groupValue, 14 | this.onChanged, 15 | }); 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return TextButton.icon( 20 | onPressed: () => onChanged?.call(value), 21 | icon: Radio( 22 | hoverColor: Colors.transparent, 23 | value: value, 24 | groupValue: groupValue, 25 | onChanged: onChanged, 26 | ), 27 | label: Text(label), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | args: 5 | dependency: transitive 6 | description: 7 | name: args 8 | sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "2.4.2" 12 | async: 13 | dependency: transitive 14 | description: 15 | name: async 16 | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "2.11.0" 20 | boolean_selector: 21 | dependency: transitive 22 | description: 23 | name: boolean_selector 24 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "2.1.1" 28 | characters: 29 | dependency: transitive 30 | description: 31 | name: characters 32 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "1.3.0" 36 | clock: 37 | dependency: transitive 38 | description: 39 | name: clock 40 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "1.1.1" 44 | collection: 45 | dependency: transitive 46 | description: 47 | name: collection 48 | sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a 49 | url: "https://pub.dev" 50 | source: hosted 51 | version: "1.18.0" 52 | dev_build: 53 | dependency: transitive 54 | description: 55 | name: dev_build 56 | sha256: e5d575f3de4b0e5f004e065e1e2d98fa012d634b61b5855216b5698ed7f1e443 57 | url: "https://pub.dev" 58 | source: hosted 59 | version: "0.16.4+3" 60 | fake_async: 61 | dependency: transitive 62 | description: 63 | name: fake_async 64 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 65 | url: "https://pub.dev" 66 | source: hosted 67 | version: "1.3.1" 68 | ffi: 69 | dependency: transitive 70 | description: 71 | name: ffi 72 | sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" 73 | url: "https://pub.dev" 74 | source: hosted 75 | version: "2.1.2" 76 | flutter: 77 | dependency: "direct main" 78 | description: flutter 79 | source: sdk 80 | version: "0.0.0" 81 | flutter_test: 82 | dependency: "direct dev" 83 | description: flutter 84 | source: sdk 85 | version: "0.0.0" 86 | http: 87 | dependency: transitive 88 | description: 89 | name: http 90 | sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" 91 | url: "https://pub.dev" 92 | source: hosted 93 | version: "1.2.1" 94 | http_parser: 95 | dependency: transitive 96 | description: 97 | name: http_parser 98 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" 99 | url: "https://pub.dev" 100 | source: hosted 101 | version: "4.0.2" 102 | js: 103 | dependency: transitive 104 | description: 105 | name: js 106 | sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 107 | url: "https://pub.dev" 108 | source: hosted 109 | version: "0.6.7" 110 | leak_tracker: 111 | dependency: transitive 112 | description: 113 | name: leak_tracker 114 | sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" 115 | url: "https://pub.dev" 116 | source: hosted 117 | version: "10.0.0" 118 | leak_tracker_flutter_testing: 119 | dependency: transitive 120 | description: 121 | name: leak_tracker_flutter_testing 122 | sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 123 | url: "https://pub.dev" 124 | source: hosted 125 | version: "2.0.1" 126 | leak_tracker_testing: 127 | dependency: transitive 128 | description: 129 | name: leak_tracker_testing 130 | sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 131 | url: "https://pub.dev" 132 | source: hosted 133 | version: "2.0.1" 134 | lint: 135 | dependency: "direct dev" 136 | description: 137 | name: lint 138 | sha256: d758a5211fce7fd3f5e316f804daefecdc34c7e53559716125e6da7388ae8565 139 | url: "https://pub.dev" 140 | source: hosted 141 | version: "2.3.0" 142 | matcher: 143 | dependency: transitive 144 | description: 145 | name: matcher 146 | sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb 147 | url: "https://pub.dev" 148 | source: hosted 149 | version: "0.12.16+1" 150 | material_color_utilities: 151 | dependency: transitive 152 | description: 153 | name: material_color_utilities 154 | sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" 155 | url: "https://pub.dev" 156 | source: hosted 157 | version: "0.8.0" 158 | meta: 159 | dependency: transitive 160 | description: 161 | name: meta 162 | sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 163 | url: "https://pub.dev" 164 | source: hosted 165 | version: "1.11.0" 166 | path: 167 | dependency: transitive 168 | description: 169 | name: path 170 | sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" 171 | url: "https://pub.dev" 172 | source: hosted 173 | version: "1.9.0" 174 | pool: 175 | dependency: transitive 176 | description: 177 | name: pool 178 | sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" 179 | url: "https://pub.dev" 180 | source: hosted 181 | version: "1.5.1" 182 | process_run: 183 | dependency: transitive 184 | description: 185 | name: process_run 186 | sha256: "8d9c6198b98fbbfb511edd42e7364e24d85c163e47398919871b952dc86a423e" 187 | url: "https://pub.dev" 188 | source: hosted 189 | version: "0.14.2" 190 | pub_semver: 191 | dependency: transitive 192 | description: 193 | name: pub_semver 194 | sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" 195 | url: "https://pub.dev" 196 | source: hosted 197 | version: "2.1.4" 198 | sky_engine: 199 | dependency: transitive 200 | description: flutter 201 | source: sdk 202 | version: "0.0.99" 203 | source_span: 204 | dependency: transitive 205 | description: 206 | name: source_span 207 | sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" 208 | url: "https://pub.dev" 209 | source: hosted 210 | version: "1.10.0" 211 | sqflite_common: 212 | dependency: transitive 213 | description: 214 | name: sqflite_common 215 | sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" 216 | url: "https://pub.dev" 217 | source: hosted 218 | version: "2.5.3" 219 | sqflite_common_ffi: 220 | dependency: transitive 221 | description: 222 | name: sqflite_common_ffi 223 | sha256: "754927d82de369a6b9e760fb60640aa81da650f35ffd468d5a992814d6022908" 224 | url: "https://pub.dev" 225 | source: hosted 226 | version: "2.3.2+1" 227 | sqflite_common_ffi_web: 228 | dependency: "direct main" 229 | description: 230 | name: sqflite_common_ffi_web 231 | sha256: "0c2921454d2e4a227675fb952be9fef916cf65fb9e9b606b54cfdf080d3e9450" 232 | url: "https://pub.dev" 233 | source: hosted 234 | version: "0.4.2+3" 235 | sqlite3: 236 | dependency: transitive 237 | description: 238 | name: sqlite3 239 | sha256: "072128763f1547e3e9b4735ce846bfd226d68019ccda54db4cd427b12dfdedc9" 240 | url: "https://pub.dev" 241 | source: hosted 242 | version: "2.4.0" 243 | stack_trace: 244 | dependency: transitive 245 | description: 246 | name: stack_trace 247 | sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" 248 | url: "https://pub.dev" 249 | source: hosted 250 | version: "1.11.1" 251 | stream_channel: 252 | dependency: transitive 253 | description: 254 | name: stream_channel 255 | sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 256 | url: "https://pub.dev" 257 | source: hosted 258 | version: "2.1.2" 259 | string_scanner: 260 | dependency: transitive 261 | description: 262 | name: string_scanner 263 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 264 | url: "https://pub.dev" 265 | source: hosted 266 | version: "1.2.0" 267 | synchronized: 268 | dependency: transitive 269 | description: 270 | name: synchronized 271 | sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" 272 | url: "https://pub.dev" 273 | source: hosted 274 | version: "3.1.0+1" 275 | term_glyph: 276 | dependency: transitive 277 | description: 278 | name: term_glyph 279 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 280 | url: "https://pub.dev" 281 | source: hosted 282 | version: "1.2.1" 283 | test_api: 284 | dependency: transitive 285 | description: 286 | name: test_api 287 | sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" 288 | url: "https://pub.dev" 289 | source: hosted 290 | version: "0.6.1" 291 | typed_data: 292 | dependency: transitive 293 | description: 294 | name: typed_data 295 | sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c 296 | url: "https://pub.dev" 297 | source: hosted 298 | version: "1.3.2" 299 | vector_math: 300 | dependency: transitive 301 | description: 302 | name: vector_math 303 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 304 | url: "https://pub.dev" 305 | source: hosted 306 | version: "2.1.4" 307 | vm_service: 308 | dependency: transitive 309 | description: 310 | name: vm_service 311 | sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 312 | url: "https://pub.dev" 313 | source: hosted 314 | version: "13.0.0" 315 | web: 316 | dependency: transitive 317 | description: 318 | name: web 319 | sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" 320 | url: "https://pub.dev" 321 | source: hosted 322 | version: "0.5.1" 323 | yaml: 324 | dependency: transitive 325 | description: 326 | name: yaml 327 | sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" 328 | url: "https://pub.dev" 329 | source: hosted 330 | version: "3.1.2" 331 | sdks: 332 | dart: ">=3.3.1 <4.0.0" 333 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: allsql 2 | description: AllSQL is an open-source compact browser-based SQL Compiler, built using Flutter. 3 | 4 | publish_to: 'none' 5 | 6 | version: 1.3.0+4 7 | 8 | environment: 9 | sdk: '>=3.3.1 <4.0.0' 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | sqflite_common_ffi_web: ^0.4.2+3 15 | 16 | dev_dependencies: 17 | flutter_test: 18 | sdk: flutter 19 | lint: ^2.3.0 20 | 21 | flutter: 22 | 23 | uses-material-design: true 24 | -------------------------------------------------------------------------------- /web/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/favicon.ico -------------------------------------------------------------------------------- /web/icons/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-144x144.png -------------------------------------------------------------------------------- /web/icons/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-192x192.png -------------------------------------------------------------------------------- /web/icons/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-36x36.png -------------------------------------------------------------------------------- /web/icons/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-48x48.png -------------------------------------------------------------------------------- /web/icons/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-72x72.png -------------------------------------------------------------------------------- /web/icons/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/android-icon-96x96.png -------------------------------------------------------------------------------- /web/icons/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-114x114.png -------------------------------------------------------------------------------- /web/icons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-120x120.png -------------------------------------------------------------------------------- /web/icons/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-144x144.png -------------------------------------------------------------------------------- /web/icons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-152x152.png -------------------------------------------------------------------------------- /web/icons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-180x180.png -------------------------------------------------------------------------------- /web/icons/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-57x57.png -------------------------------------------------------------------------------- /web/icons/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-60x60.png -------------------------------------------------------------------------------- /web/icons/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-72x72.png -------------------------------------------------------------------------------- /web/icons/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-76x76.png -------------------------------------------------------------------------------- /web/icons/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon-precomposed.png -------------------------------------------------------------------------------- /web/icons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/apple-icon.png -------------------------------------------------------------------------------- /web/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/favicon-16x16.png -------------------------------------------------------------------------------- /web/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/favicon-32x32.png -------------------------------------------------------------------------------- /web/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/favicon-96x96.png -------------------------------------------------------------------------------- /web/icons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/ms-icon-144x144.png -------------------------------------------------------------------------------- /web/icons/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/ms-icon-150x150.png -------------------------------------------------------------------------------- /web/icons/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/ms-icon-310x310.png -------------------------------------------------------------------------------- /web/icons/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/icons/ms-icon-70x70.png -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | AllSQL - An open-source compact browser-based SQL Compiler 65 | 66 | 67 | 71 | 72 | 73 | 74 | 75 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AllSQL - An open-source compact browser-based SQL Compiler", 3 | "short_name": "AllSQL", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#009688", 7 | "theme_color": "#009688", 8 | "description": "AllSQL is an open-source compact browser-based SQL Compiler, built using Flutter.", 9 | "orientation": "any", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/android-icon-36x36.png", 14 | "sizes": "36x36", 15 | "type": "image/png", 16 | "density": "0.75" 17 | }, 18 | { 19 | "src": "icons/android-icon-48x48.png", 20 | "sizes": "48x48", 21 | "type": "image/png", 22 | "density": "1.0" 23 | }, 24 | { 25 | "src": "icons/android-icon-72x72.png", 26 | "sizes": "72x72", 27 | "type": "image/png", 28 | "density": "1.5" 29 | }, 30 | { 31 | "src": "icons/android-icon-96x96.png", 32 | "sizes": "96x96", 33 | "type": "image/png", 34 | "density": "2.0" 35 | }, 36 | { 37 | "src": "icons/android-icon-144x144.png", 38 | "sizes": "144x144", 39 | "type": "image/png", 40 | "density": "3.0" 41 | }, 42 | { 43 | "src": "icons/android-icon-192x192.png", 44 | "sizes": "192x192", 45 | "type": "image/png", 46 | "density": "4.0" 47 | } 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /web/sqlite3.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/masteradit/AllSQL/970892ebeb96cda3462497670298a9a7b0f2df81/web/sqlite3.wasm --------------------------------------------------------------------------------