├── .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 |
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 |
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 |
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 |
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 | [](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
--------------------------------------------------------------------------------