diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ec06f07 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +**/*.g.dart linguist-generated=true +**/generated/** linguist-generated=true +**/protocol/** linguist-generated=true +**/serverpod_test_tools.dart linguist-generated=true +**/migrations/** linguist-generated=true + +# Compensate for too broad protocol pattern +**/lib/src/**/migrations/** linguist-generated=false +**/test/**/migrations/** linguist-generated=false diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index e1b8901..9f25efb 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -9,8 +9,8 @@ ## Project Context - This package is a non-invasive plugin implementation of offline-first - features for Drift that uses CRDT (conflict-free replicated data types) for - conflict resolution. + features for Serverpod that uses CRDT (conflict-free replicated data types) + for conflict resolution. - The package is in early stages and more documentation will be added as it evolves. Currently, rely on the code and comments to understand how it works. Although extensive docs are not present, the code is well-documented and the diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6b8794e..aa186c0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,25 +16,6 @@ concurrency: cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: - generate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Dart - uses: dart-lang/setup-dart@v1 - - name: Run pub get - run: dart pub get - - name: Generate code - run: dart run build_runner build --delete-conflicting-outputs - - name: Upload generated code - uses: actions/upload-artifact@v4 - with: - name: generated-code - path: | - **/*.g.dart - **/*.freezed.dart - lib/**/*.part.dart - dart_format: name: dart format runs-on: ubuntu-latest @@ -42,123 +23,102 @@ jobs: - uses: actions/checkout@v4 - name: Set up Dart uses: dart-lang/setup-dart@v1 - - name: Run pub get - run: dart pub get - # Skip code generation for formatting check - - name: Verify formatting - run: dart format --output=none --set-exit-if-changed . + # - name: Run pub get + # run: dart pub get + # - name: Verify formatting + # run: dart format --output=none --set-exit-if-changed . dart_analyze: - needs: generate name: dart analyze runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Dart uses: dart-lang/setup-dart@v1 - - name: Run pub get - run: dart pub get - - name: Download generated code - uses: actions/download-artifact@v4 - with: - name: generated-code - - name: Run lint - run: dart analyze . + # - name: Run pub get + # run: dart pub get + # - name: Run lint + # run: dart analyze . - tests: - needs: generate - name: dart test - runs-on: ubuntu-latest - permissions: - pull-requests: write - contents: read - steps: - - uses: actions/checkout@v4 - - name: Set up Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - name: Run pub get - run: dart pub get - - name: Download generated code - uses: actions/download-artifact@v4 - with: - name: generated-code - - name: Run tests with coverage - run: dart test --coverage=coverage --reporter=failures-only - - name: Activate coverage package - run: dart pub global activate coverage - - name: Format coverage - run: dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib --check-ignore --ignore-files="**/*.g.dart" - - name: Generate coverage report - run: dart scripts/coverage_report.dart --ci > coverage-results.txt - - name: Comment on PR - if: github.event_name == 'pull_request' - uses: thollander/actions-comment-pull-request@v3 - with: - file-path: coverage-results.txt - comment-tag: coverage-results + # tests: + # name: dart test + # runs-on: ubuntu-latest + # permissions: + # pull-requests: write + # contents: read + # steps: + # - uses: actions/checkout@v4 + # - name: Set up Dart + # uses: dart-lang/setup-dart@v1 + # with: + # sdk: stable + # - name: Run pub get + # run: dart pub get + # - name: Run tests with coverage + # run: dart test --coverage=coverage --reporter=failures-only + # - name: Activate coverage package + # run: dart pub global activate coverage + # - name: Format coverage + # run: dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib --check-ignore --ignore-files="**/*.g.dart" + # - name: Generate coverage report + # run: dart scripts/coverage_report.dart --ci > coverage-results.txt + # - name: Comment on PR + # if: github.event_name == 'pull_request' + # uses: thollander/actions-comment-pull-request@v3 + # with: + # file-path: coverage-results.txt + # comment-tag: coverage-results - benchmarks: - needs: generate - name: run benchmarks - runs-on: ubuntu-latest - permissions: - pull-requests: write - contents: write - steps: - - uses: actions/checkout@v4 - - name: Set up Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - name: Run pub get - run: dart pub get - - name: Download generated code - uses: actions/download-artifact@v4 - with: - name: generated-code - - name: Configure Git - run: | - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - - name: Fetch Existing Benchmark Data - run: git fetch origin refs/notes/benchmarks:refs/notes/benchmarks || true - - name: Run benchmarks - run: dart benchmark/run.dart --ci > benchmark-results.txt - - name: Comment on PR - if: github.event_name == 'pull_request' - uses: thollander/actions-comment-pull-request@v3 - with: - file-path: benchmark-results.txt - comment-tag: benchmark-results - - name: Store Benchmark Data in Git Notes - run: | - if [ "${{ github.event_name }}" = "pull_request" ]; then - COMMIT_SHA=${{ github.event.pull_request.head.sha }} - else - COMMIT_SHA=${{ github.sha }} - fi - git notes --ref=benchmarks add -f -F benchmark-results.txt $COMMIT_SHA - - name: Push Benchmark Data - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork != true - run: git push origin refs/notes/benchmarks + # benchmarks: + # name: run benchmarks + # runs-on: ubuntu-latest + # permissions: + # pull-requests: write + # contents: write + # steps: + # - uses: actions/checkout@v4 + # - name: Set up Dart + # uses: dart-lang/setup-dart@v1 + # with: + # sdk: stable + # - name: Run pub get + # run: dart pub get + # - name: Configure Git + # run: | + # git config --global user.name "GitHub Actions" + # git config --global user.email "actions@github.com" + # - name: Fetch Existing Benchmark Data + # run: git fetch origin refs/notes/benchmarks:refs/notes/benchmarks || true + # - name: Run benchmarks + # run: dart benchmark/run.dart --ci > benchmark-results.txt + # - name: Comment on PR + # if: github.event_name == 'pull_request' + # uses: thollander/actions-comment-pull-request@v3 + # with: + # file-path: benchmark-results.txt + # comment-tag: benchmark-results + # - name: Store Benchmark Data in Git Notes + # run: | + # if [ "${{ github.event_name }}" = "pull_request" ]; then + # COMMIT_SHA=${{ github.event.pull_request.head.sha }} + # else + # COMMIT_SHA=${{ github.sha }} + # fi + # git notes --ref=benchmarks add -f -F benchmark-results.txt $COMMIT_SHA + # - name: Push Benchmark Data + # if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork != true + # run: git push origin refs/notes/benchmarks - publish_check: - needs: generate - name: dart publish check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - name: Run pub get - run: dart pub get - - name: Download generated code - uses: actions/download-artifact@v4 - with: - name: generated-code - - name: Run publish dry run - run: dart pub publish --dry-run + # publish_check: + # name: dart publish check + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # - name: Set up Dart + # uses: dart-lang/setup-dart@v1 + # with: + # sdk: stable + # - name: Run pub get + # run: dart pub get + # - name: Run publish dry run + # run: dart pub publish --dry-run diff --git a/.gitignore b/.gitignore index 51f3689..fbeb142 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ pubspec.lock .vscode/ -*.g.dart # Coverage reports coverage/ diff --git a/README.md b/README.md index 5213ac3..2d889f8 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -# Drift Offline Sync +# Serverpod Offline Sync [![GitHub](https://img.shields.io/badge/GitHub-marcelomendoncasoares-181717.svg?style=flat&logo=github)](https://github.com/marcelomendoncasoares) -[![Pub Package](https://img.shields.io/pub/v/drift_offline_sync.svg)](https://pub.dev/packages/drift_offline_sync) -[![Dart SDK Version](https://badgen.net/pub/sdk-version/drift_offline_sync.svg)](https://pub.dev/packages/drift_offline_sync) -[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/marcelomendoncasoares/drift_offline_sync/blob/main/LICENSE) -[![CI](https://github.com/marcelomendoncasoares/drift_offline_sync/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/marcelomendoncasoares/drift_offline_sync/actions/workflows/ci.yaml) +[![Pub Package](https://img.shields.io/pub/v/serverpod_offline_sync.svg)](https://pub.dev/packages/serverpod_offline_sync) +[![Dart SDK Version](https://badgen.net/pub/sdk-version/serverpod_offline_sync.svg)](https://pub.dev/packages/serverpod_offline_sync) +[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/marcelomendoncasoares/serverpod_offline_sync/blob/main/LICENSE) +[![CI](https://github.com/marcelomendoncasoares/serverpod_offline_sync/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/marcelomendoncasoares/serverpod_offline_sync/actions/workflows/ci.yaml) -A plugin to build offline-first applications with Drift. Develop your app as a -normal offline app and use this non-invasive plugin to automatically handle the -sync process using CRDT (Conflict-free Replicated Data Type). Works -out-of-the-box with Drift's existing APIs. +A plugin to build offline-first applications with Serverpod. Develop your app +as a normal offline app and use this non-invasive plugin to automatically +handle the sync process using CRDT (Conflict-free Replicated Data Type). Works +out-of-the-box with Serverpod's existing APIs. -- [Drift Offline Sync](#drift-offline-sync) +- [Serverpod Offline Sync](#serverpod-offline-sync) - [Features](#features) - [Getting started](#getting-started) - [Usage](#usage) diff --git a/SPEC.md b/SPEC.md deleted file mode 100644 index 6accad0..0000000 --- a/SPEC.md +++ /dev/null @@ -1,41 +0,0 @@ -# Specification for the implementation - -## Starting the database - -- After the `createAll()`, call a custom function to inspect the database and - list: - - Each table unique constraints - - All foreign keys - -Check -[this research](https://www.perplexity.ai/search/on-drift-for-flutter-after-all-aaj9LV1QTeSST3brpolEMA) -for reference. - -## How to specify which constraint to apply to each case? - -Unique can be handled as: - -- on_conflict_merge (default) -- on_conflict_overwrite - -Foreign keys can be handled as: - -- on_fk_deleted_delete_this (default, if cascade delete) -- on_fk_deleted_set_null (default, if optional) -- on_fk_deleted_restore_related - -## After merge on sync, a callback must be available to check custom rules - -There must have an easy way to issue fixes and re-run the merge. - -## Next: - -- [ ] Design the registration of constraints in the database. -- [ ] Integrate the CRDT for retrieval of changes. -- [ ] Integrate the CRDT merge logic. -- [ ] Integrate the compensation logic with the merge logic. -- [ ] Implement a regenerate process to run after migrations. -- [ ] Add pending tests marked as TODO. -- [ ] Transform this repo in a monorepo with this package and a Flutter version - that provides a custom `driftDatabase` function that already passes the - closure to add the `next_hlc_timestamp` function to the database. diff --git a/legacy/drift_offline_sync/.github/workflows/ci.yaml b/legacy/drift_offline_sync/.github/workflows/ci.yaml new file mode 100644 index 0000000..6b8794e --- /dev/null +++ b/legacy/drift_offline_sync/.github/workflows/ci.yaml @@ -0,0 +1,164 @@ +name: CI + +on: + workflow_dispatch: + push: + branches: + - main + - stable-* + pull_request: + branches: + - main + - stable-* + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +jobs: + generate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + - name: Run pub get + run: dart pub get + - name: Generate code + run: dart run build_runner build --delete-conflicting-outputs + - name: Upload generated code + uses: actions/upload-artifact@v4 + with: + name: generated-code + path: | + **/*.g.dart + **/*.freezed.dart + lib/**/*.part.dart + + dart_format: + name: dart format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + - name: Run pub get + run: dart pub get + # Skip code generation for formatting check + - name: Verify formatting + run: dart format --output=none --set-exit-if-changed . + + dart_analyze: + needs: generate + name: dart analyze + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + - name: Run pub get + run: dart pub get + - name: Download generated code + uses: actions/download-artifact@v4 + with: + name: generated-code + - name: Run lint + run: dart analyze . + + tests: + needs: generate + name: dart test + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: read + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + - name: Run pub get + run: dart pub get + - name: Download generated code + uses: actions/download-artifact@v4 + with: + name: generated-code + - name: Run tests with coverage + run: dart test --coverage=coverage --reporter=failures-only + - name: Activate coverage package + run: dart pub global activate coverage + - name: Format coverage + run: dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib --check-ignore --ignore-files="**/*.g.dart" + - name: Generate coverage report + run: dart scripts/coverage_report.dart --ci > coverage-results.txt + - name: Comment on PR + if: github.event_name == 'pull_request' + uses: thollander/actions-comment-pull-request@v3 + with: + file-path: coverage-results.txt + comment-tag: coverage-results + + benchmarks: + needs: generate + name: run benchmarks + runs-on: ubuntu-latest + permissions: + pull-requests: write + contents: write + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + - name: Run pub get + run: dart pub get + - name: Download generated code + uses: actions/download-artifact@v4 + with: + name: generated-code + - name: Configure Git + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "actions@github.com" + - name: Fetch Existing Benchmark Data + run: git fetch origin refs/notes/benchmarks:refs/notes/benchmarks || true + - name: Run benchmarks + run: dart benchmark/run.dart --ci > benchmark-results.txt + - name: Comment on PR + if: github.event_name == 'pull_request' + uses: thollander/actions-comment-pull-request@v3 + with: + file-path: benchmark-results.txt + comment-tag: benchmark-results + - name: Store Benchmark Data in Git Notes + run: | + if [ "${{ github.event_name }}" = "pull_request" ]; then + COMMIT_SHA=${{ github.event.pull_request.head.sha }} + else + COMMIT_SHA=${{ github.sha }} + fi + git notes --ref=benchmarks add -f -F benchmark-results.txt $COMMIT_SHA + - name: Push Benchmark Data + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork != true + run: git push origin refs/notes/benchmarks + + publish_check: + needs: generate + name: dart publish check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + - name: Run pub get + run: dart pub get + - name: Download generated code + uses: actions/download-artifact@v4 + with: + name: generated-code + - name: Run publish dry run + run: dart pub publish --dry-run diff --git a/legacy/drift_offline_sync/.gitignore b/legacy/drift_offline_sync/.gitignore new file mode 100644 index 0000000..fbeb142 --- /dev/null +++ b/legacy/drift_offline_sync/.gitignore @@ -0,0 +1,13 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock + +.vscode/ + +# Coverage reports +coverage/ +coverage-results.txt diff --git a/legacy/drift_offline_sync/CHANGELOG.md b/legacy/drift_offline_sync/CHANGELOG.md new file mode 100644 index 0000000..b78d64c --- /dev/null +++ b/legacy/drift_offline_sync/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +- Initial version. diff --git a/legacy/drift_offline_sync/LICENSE b/legacy/drift_offline_sync/LICENSE new file mode 100644 index 0000000..22f6ce0 --- /dev/null +++ b/legacy/drift_offline_sync/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Marcelo Mendonça Soares + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/legacy/drift_offline_sync/README.md b/legacy/drift_offline_sync/README.md new file mode 100644 index 0000000..280a7dd --- /dev/null +++ b/legacy/drift_offline_sync/README.md @@ -0,0 +1,90 @@ +# Drift Offline Sync + +[![GitHub](https://img.shields.io/badge/GitHub-marcelomendoncasoares-181717.svg?style=flat&logo=github)](https://github.com/marcelomendoncasoares) +[![Pub Package](https://img.shields.io/pub/v/drift_offline_sync.svg)](https://pub.dev/packages/drift_offline_sync) +[![Dart SDK Version](https://badgen.net/pub/sdk-version/drift_offline_sync.svg)](https://pub.dev/packages/drift_offline_sync) +[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/marcelomendoncasoares/drift_offline_sync/blob/main/LICENSE) +[![CI](https://github.com/marcelomendoncasoares/drift_offline_sync/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/marcelomendoncasoares/drift_offline_sync/actions/workflows/ci.yaml) + +A plugin to build offline-first applications with Drift. Develop your app as a +normal offline app and use this non-invasive plugin to automatically handle the +sync process using CRDT (Conflict-free Replicated Data Type). Works +out-of-the-box with Drift's existing APIs. + +- [Drift Offline Sync](#drift-offline-sync) + - [What is this package?](#what-is-this-package) + - [Usage](#usage) + - [How does it work?](#how-does-it-work) + - [Performance considerations](#performance-considerations) + - [License](#license) + +--- + +## What is this package? + +This package is an adapter for a Drift database that can transform any offline application into offline-first with multi-device support. It can be plugged into any application developed with an offline database (managed in Drift) to provide full synchronization with a remote server. The only required change is the replacement of the original `Migrator` object in the database declaration by the one provided in this package and that all tables have a UUID as part of its primary key. + +Under the hood, the sync engine uses Conflict-free Replicated Data Types (CRDT) to merge updates and solve merge conflicts. Beyond traditional CRDT approaches, it implements a robust mechanism to preserve invariants of the system (foreign key and unique constraints, for example) and handle migrations. This is what enables this engine to be safely used with traditional relational data instead of sacrificing data integrity and strict typing to use key-value storages. + +## Usage + +Just use the `OfflineSyncMigrator` in the `createMigrator` method of your database class. + +```dart +class TodoDb extends _$TodoDb { + TodoDb(super.e); + + @override + int schemaVersion = 1; + + // This is what needs to be added to the user database class to make it CRDT aware. + @override + OfflineSyncMigrator createMigrator() => OfflineSyncMigrator( + this, + userId: userId, + nodeId: nodeId, + synchronizedTables: [ + todosTable, + categories, + users, + sharedTodos, + ], + excludeTables: [ + listing, + product, + ], + ); +} +``` + +Make sure that all tables have a UUID as part of its primary key - standard practice for distributed systems. + +## How does it work? + +When the database is initialized, the `OfflineSyncMigrator` will create a few control tables and add triggers to all user tables listed for synchronization (defaults to all tables). Each table will receive three triggers: after insert, after update and after delete. The triggers serve to populate the main CRDT control table with all the changes (granular, individualized to field updates and their invariance preserving rules). Each update is marked with an HLC (Hybrid Logical Clock) timestamp that will be used as reference to further merging changes between devices. + +During migrations, as triggers are created expecting the current table schema, they must be removed to avoid errors - like trying to compare a column that was removed. So, after migration is finished, a `regenerate` is called to compare the changes and synchronize the central CRDT registry. In the meantime, changes to the schema (like column addition and deletion) are reflected to the stored data on the central registry. + +Although schema changes does not get propagated through the merging process—there is no CRDT registry for table schemas—this is not a concern, as changes can only be synchronized if the databases match version. So, after migration, all databases will converge to the same schema, with each carrying their pending merge data to the new format. Only then, sync will occur. + +## Performance considerations + +The greater costs of this adapter are: + +- Database size can be doubled or more. +- Each insert/update/delete happen twice. +- Migrations require a regenerate process that increases time considerably. + +The advantages are: + +- Offline-first sync. +- No performance cost on read operations. +- Simple offline app development. +- Invariant safety - no weird states in the data. +- Plug and play to any existing offline app. +- No dealing with remote-aware repositories. + +## License + +This package is distributed under the MIT License. See the LICENSE file for +more information. diff --git a/legacy/drift_offline_sync/analysis_options.yaml b/legacy/drift_offline_sync/analysis_options.yaml new file mode 100644 index 0000000..ec24b42 --- /dev/null +++ b/legacy/drift_offline_sync/analysis_options.yaml @@ -0,0 +1,132 @@ +include: package:lints/recommended.yaml + +linter: + rules: + - always_declare_return_types + - always_put_required_named_parameters_first + - annotate_redeclares + - avoid_bool_literals_in_conditional_expressions + - avoid_catches_without_on_clauses + - avoid_catching_errors + - avoid_empty_else + - avoid_escaping_inner_quotes + - avoid_field_initializers_in_const_classes + - avoid_final_parameters + - avoid_js_rounded_ints + - avoid_positional_boolean_parameters + - avoid_private_typedef_functions + - avoid_relative_lib_imports + - avoid_returning_this + - avoid_setters_without_getters + - avoid_shadowing_type_parameters + - avoid_slow_async_io + - avoid_types_as_parameter_names + - avoid_unused_constructor_parameters + - avoid_void_async + - await_only_futures + - camel_case_extensions + - cancel_subscriptions + - cascade_invocations + - cast_nullable_to_non_nullable + - close_sinks + - collection_methods_unrelated_type + - combinators_ordering + - comment_references + - conditional_uri_does_not_exist + - curly_braces_in_flow_control_structures + - dangling_library_doc_comments + - depend_on_referenced_packages + - deprecated_consistency + - deprecated_member_use_from_same_package + - directives_ordering + - discarded_futures + - document_ignores + - empty_catches + - eol_at_end_of_file + - file_names + - hash_and_equals + - implicit_call_tearoffs + - invalid_case_patterns + - library_names + - literal_only_boolean_expressions + - matching_super_parameters + - missing_code_block_language_in_doc_comment + - missing_whitespace_between_adjacent_strings + - no_adjacent_strings_in_list + - no_duplicate_case_values + - no_literal_bool_comparisons + - no_runtimeType_toString + - no_self_assignments + - no_wildcard_variable_uses + - non_constant_identifier_names + - noop_primitive_operations + - null_check_on_nullable_type_parameter + - omit_local_variable_types + - only_throw_errors + - package_prefixed_library_names + - prefer_const_constructors + - prefer_const_declarations + - prefer_final_in_for_each + - prefer_final_locals + - prefer_foreach + - prefer_if_elements_to_conditional_expressions + - prefer_is_empty + - prefer_is_not_empty + - prefer_iterable_whereType + - prefer_mixin + - prefer_null_aware_method_calls + - prefer_relative_imports + - prefer_single_quotes + - prefer_typing_uninitialized_variables + - prefer_void_to_null + - provide_deprecation_message + - public_member_api_docs + - require_trailing_commas + - sized_box_shrink_expand + - sort_constructors_first + - sort_unnamed_constructors_first + - test_types_in_equals + - throw_in_finally + - tighten_type_of_initializing_formals + - type_annotate_public_apis + - type_literal_in_constant_pattern + - unawaited_futures + - unintended_html_in_doc_comment + - unnecessary_await_in_return + - unnecessary_breaks + - unnecessary_lambdas + - unnecessary_library_directive + - unnecessary_null_aware_operator_on_extension_on_nullable + - unnecessary_null_checks + - unnecessary_overrides + - unnecessary_parenthesis + - unnecessary_raw_strings + - unnecessary_statements + - unreachable_from_main + - unrelated_type_equality_checks + - use_colored_box + - use_decorated_box + - use_enums + - use_if_null_to_convert_nulls_to_bools + - use_is_even_rather_than_modulo + - use_named_constants + - use_raw_strings + - use_setters_to_change_properties + - use_string_buffers + - use_string_in_part_of_directives + - use_test_throws_matchers + - use_to_and_as_if_applicable + - valid_regexps + - void_checks + +formatter: + page_width: 88 + trailing_commas: preserve + +analyzer: + exclude: + - "**/*.g.dart" + - "**/*.drift.dart" + language: + strict-casts: true + strict-inference: true diff --git a/benchmark/README.md b/legacy/drift_offline_sync/benchmark/README.md similarity index 100% rename from benchmark/README.md rename to legacy/drift_offline_sync/benchmark/README.md diff --git a/benchmark/run.dart b/legacy/drift_offline_sync/benchmark/run.dart similarity index 100% rename from benchmark/run.dart rename to legacy/drift_offline_sync/benchmark/run.dart diff --git a/benchmark/utils/benchmark.dart b/legacy/drift_offline_sync/benchmark/utils/benchmark.dart similarity index 89% rename from benchmark/utils/benchmark.dart rename to legacy/drift_offline_sync/benchmark/utils/benchmark.dart index 15ffaa2..8768733 100644 --- a/benchmark/utils/benchmark.dart +++ b/legacy/drift_offline_sync/benchmark/utils/benchmark.dart @@ -6,7 +6,7 @@ import 'package:path/path.dart' as p; import 'database.dart'; -export 'package:drift_offline_sync/src/database/triggers.dart' show Operation; +export '../../lib/src/database/triggers.dart' show Operation; class CrdtBenchmark extends AsyncBenchmarkBase { CrdtBenchmark( @@ -30,7 +30,10 @@ class CrdtBenchmark extends AsyncBenchmarkBase { Future setup() async { final dbPath = p.join(Directory.systemTemp.path, 'benchmark_$name.db'); _dbFile = File(dbPath); - _db = CrdtBenchmarkDatabase.createDatabase(_dbFile, crdtEnabled: crdtEnabled); + _db = CrdtBenchmarkDatabase.createDatabase( + _dbFile, + crdtEnabled: crdtEnabled, + ); // Force the migration to be applied during setup. await _db.batchInsertTestRows(1); @@ -85,7 +88,9 @@ class CrdtBenchmark extends AsyncBenchmarkBase { throw Exception('Last database size is not set.'); } if (_lastRowsCount < rowCount) { - throw Exception('Rows count is $_lastRowsCount but expected at least $rowCount.'); + throw Exception( + 'Rows count is $_lastRowsCount but expected at least $rowCount.', + ); } // If the benchmark ran for more than one loop, it can contain a greater number // of rows than the expected. We need to normalize it to the expected total. diff --git a/benchmark/utils/conversion.dart b/legacy/drift_offline_sync/benchmark/utils/conversion.dart similarity index 100% rename from benchmark/utils/conversion.dart rename to legacy/drift_offline_sync/benchmark/utils/conversion.dart diff --git a/benchmark/utils/database.dart b/legacy/drift_offline_sync/benchmark/utils/database.dart similarity index 96% rename from benchmark/utils/database.dart rename to legacy/drift_offline_sync/benchmark/utils/database.dart index 01d9bd1..5fe1380 100644 --- a/benchmark/utils/database.dart +++ b/legacy/drift_offline_sync/benchmark/utils/database.dart @@ -74,7 +74,10 @@ class CrdtBenchmarkDatabase extends _$CrdtBenchmarkDatabase { return managers.tableWithEveryColumnType.count(); } - TableWithEveryColumnTypeCompanion _createTestRow(int i, DateTime baseTimestamp) { + TableWithEveryColumnTypeCompanion _createTestRow( + int i, + DateTime baseTimestamp, + ) { return TableWithEveryColumnTypeCompanion( id: Value(RowId(i)), aBool: Value(i.isEven), diff --git a/legacy/drift_offline_sync/benchmark/utils/database.g.dart b/legacy/drift_offline_sync/benchmark/utils/database.g.dart new file mode 100644 index 0000000..a1d4251 --- /dev/null +++ b/legacy/drift_offline_sync/benchmark/utils/database.g.dart @@ -0,0 +1,1075 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $TableWithEveryColumnTypeTable extends TableWithEveryColumnType + with + TableInfo< + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + > { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TableWithEveryColumnTypeTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($TableWithEveryColumnTypeTable.$converterid); + static const VerificationMeta _aBoolMeta = const VerificationMeta('aBool'); + @override + late final GeneratedColumn aBool = GeneratedColumn( + 'a_bool', + aliasedName, + true, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({ + SqlDialect.sqlite: 'CHECK ("a_bool" IN (0, 1))', + SqlDialect.postgres: '', + }), + ); + static const VerificationMeta _aDateTimeMeta = const VerificationMeta( + 'aDateTime', + ); + @override + late final GeneratedColumn aDateTime = GeneratedColumn( + 'a_date_time', + aliasedName, + true, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + ); + static const VerificationMeta _aTextMeta = const VerificationMeta('aText'); + @override + late final GeneratedColumn aText = GeneratedColumn( + 'a_text', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _anIntMeta = const VerificationMeta('anInt'); + @override + late final GeneratedColumn anInt = GeneratedColumn( + 'an_int', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + ); + static const VerificationMeta _anInt64Meta = const VerificationMeta( + 'anInt64', + ); + @override + late final GeneratedColumn anInt64 = GeneratedColumn( + 'an_int64', + aliasedName, + true, + type: DriftSqlType.bigInt, + requiredDuringInsert: false, + ); + static const VerificationMeta _aRealMeta = const VerificationMeta('aReal'); + @override + late final GeneratedColumn aReal = GeneratedColumn( + 'a_real', + aliasedName, + true, + type: DriftSqlType.double, + requiredDuringInsert: false, + ); + static const VerificationMeta _aBlobMeta = const VerificationMeta('aBlob'); + @override + late final GeneratedColumn aBlob = GeneratedColumn( + 'a_blob', + aliasedName, + true, + type: DriftSqlType.blob, + requiredDuringInsert: false, + ); + @override + late final GeneratedColumnWithTypeConverter anIntEnum = + GeneratedColumn( + 'an_int_enum', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + ).withConverter( + $TableWithEveryColumnTypeTable.$converteranIntEnumn, + ); + @override + late final GeneratedColumnWithTypeConverter + aTextWithConverter = + GeneratedColumn( + 'insert', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern, + ); + static const VerificationMeta _aUuidMeta = const VerificationMeta('aUuid'); + @override + late final GeneratedColumn aUuid = GeneratedColumn( + 'a_uuid', + aliasedName, + true, + type: uuidType, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + id, + aBool, + aDateTime, + aText, + anInt, + anInt64, + aReal, + aBlob, + anIntEnum, + aTextWithConverter, + aUuid, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'table_with_every_column_type'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('a_bool')) { + context.handle( + _aBoolMeta, + aBool.isAcceptableOrUnknown(data['a_bool']!, _aBoolMeta), + ); + } + if (data.containsKey('a_date_time')) { + context.handle( + _aDateTimeMeta, + aDateTime.isAcceptableOrUnknown(data['a_date_time']!, _aDateTimeMeta), + ); + } + if (data.containsKey('a_text')) { + context.handle( + _aTextMeta, + aText.isAcceptableOrUnknown(data['a_text']!, _aTextMeta), + ); + } + if (data.containsKey('an_int')) { + context.handle( + _anIntMeta, + anInt.isAcceptableOrUnknown(data['an_int']!, _anIntMeta), + ); + } + if (data.containsKey('an_int64')) { + context.handle( + _anInt64Meta, + anInt64.isAcceptableOrUnknown(data['an_int64']!, _anInt64Meta), + ); + } + if (data.containsKey('a_real')) { + context.handle( + _aRealMeta, + aReal.isAcceptableOrUnknown(data['a_real']!, _aRealMeta), + ); + } + if (data.containsKey('a_blob')) { + context.handle( + _aBlobMeta, + aBlob.isAcceptableOrUnknown(data['a_blob']!, _aBlobMeta), + ); + } + if (data.containsKey('a_uuid')) { + context.handle( + _aUuidMeta, + aUuid.isAcceptableOrUnknown(data['a_uuid']!, _aUuidMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + TableWithEveryColumnTypeData map( + Map data, { + String? tablePrefix, + }) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TableWithEveryColumnTypeData( + id: $TableWithEveryColumnTypeTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + aBool: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}a_bool'], + ), + aDateTime: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}a_date_time'], + ), + aText: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}a_text'], + ), + anInt: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}an_int'], + ), + anInt64: attachedDatabase.typeMapping.read( + DriftSqlType.bigInt, + data['${effectivePrefix}an_int64'], + ), + aReal: attachedDatabase.typeMapping.read( + DriftSqlType.double, + data['${effectivePrefix}a_real'], + ), + aBlob: attachedDatabase.typeMapping.read( + DriftSqlType.blob, + data['${effectivePrefix}a_blob'], + ), + anIntEnum: $TableWithEveryColumnTypeTable.$converteranIntEnumn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}an_int_enum'], + ), + ), + aTextWithConverter: $TableWithEveryColumnTypeTable + .$converteraTextWithConvertern + .fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}insert'], + ), + ), + aUuid: attachedDatabase.typeMapping.read( + uuidType, + data['${effectivePrefix}a_uuid'], + ), + ); + } + + @override + $TableWithEveryColumnTypeTable createAlias(String alias) { + return $TableWithEveryColumnTypeTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $converteranIntEnum = + const EnumIndexConverter(TodoStatus.values); + static JsonTypeConverter2 $converteranIntEnumn = + JsonTypeConverter2.asNullable($converteranIntEnum); + static JsonTypeConverter2> + $converteraTextWithConverter = const CustomJsonConverter(); + static JsonTypeConverter2?> + $converteraTextWithConvertern = JsonTypeConverter2.asNullable( + $converteraTextWithConverter, + ); +} + +class TableWithEveryColumnTypeData extends DataClass + implements Insertable { + final RowId id; + final bool? aBool; + final DateTime? aDateTime; + final String? aText; + final int? anInt; + final BigInt? anInt64; + final double? aReal; + final Uint8List? aBlob; + final TodoStatus? anIntEnum; + final MyCustomObject? aTextWithConverter; + final UuidValue? aUuid; + const TableWithEveryColumnTypeData({ + required this.id, + this.aBool, + this.aDateTime, + this.aText, + this.anInt, + this.anInt64, + this.aReal, + this.aBlob, + this.anIntEnum, + this.aTextWithConverter, + this.aUuid, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable( + $TableWithEveryColumnTypeTable.$converterid.toSql(id), + ); + } + if (!nullToAbsent || aBool != null) { + map['a_bool'] = Variable(aBool); + } + if (!nullToAbsent || aDateTime != null) { + map['a_date_time'] = Variable(aDateTime); + } + if (!nullToAbsent || aText != null) { + map['a_text'] = Variable(aText); + } + if (!nullToAbsent || anInt != null) { + map['an_int'] = Variable(anInt); + } + if (!nullToAbsent || anInt64 != null) { + map['an_int64'] = Variable(anInt64); + } + if (!nullToAbsent || aReal != null) { + map['a_real'] = Variable(aReal); + } + if (!nullToAbsent || aBlob != null) { + map['a_blob'] = Variable(aBlob); + } + if (!nullToAbsent || anIntEnum != null) { + map['an_int_enum'] = Variable( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toSql(anIntEnum), + ); + } + if (!nullToAbsent || aTextWithConverter != null) { + map['insert'] = Variable( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toSql( + aTextWithConverter, + ), + ); + } + if (!nullToAbsent || aUuid != null) { + map['a_uuid'] = Variable(aUuid, uuidType); + } + return map; + } + + TableWithEveryColumnTypeCompanion toCompanion(bool nullToAbsent) { + return TableWithEveryColumnTypeCompanion( + id: Value(id), + aBool: aBool == null && nullToAbsent + ? const Value.absent() + : Value(aBool), + aDateTime: aDateTime == null && nullToAbsent + ? const Value.absent() + : Value(aDateTime), + aText: aText == null && nullToAbsent + ? const Value.absent() + : Value(aText), + anInt: anInt == null && nullToAbsent + ? const Value.absent() + : Value(anInt), + anInt64: anInt64 == null && nullToAbsent + ? const Value.absent() + : Value(anInt64), + aReal: aReal == null && nullToAbsent + ? const Value.absent() + : Value(aReal), + aBlob: aBlob == null && nullToAbsent + ? const Value.absent() + : Value(aBlob), + anIntEnum: anIntEnum == null && nullToAbsent + ? const Value.absent() + : Value(anIntEnum), + aTextWithConverter: aTextWithConverter == null && nullToAbsent + ? const Value.absent() + : Value(aTextWithConverter), + aUuid: aUuid == null && nullToAbsent + ? const Value.absent() + : Value(aUuid), + ); + } + + factory TableWithEveryColumnTypeData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TableWithEveryColumnTypeData( + id: $TableWithEveryColumnTypeTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + aBool: serializer.fromJson(json['a_bool']), + aDateTime: serializer.fromJson(json['a_date_time']), + aText: serializer.fromJson(json['a_text']), + anInt: serializer.fromJson(json['an_int']), + anInt64: serializer.fromJson(json['an_int64']), + aReal: serializer.fromJson(json['a_real']), + aBlob: serializer.fromJson(json['a_blob']), + anIntEnum: $TableWithEveryColumnTypeTable.$converteranIntEnumn.fromJson( + serializer.fromJson(json['an_int_enum']), + ), + aTextWithConverter: $TableWithEveryColumnTypeTable + .$converteraTextWithConvertern + .fromJson( + serializer.fromJson?>(json['insert']), + ), + aUuid: serializer.fromJson(json['a_uuid']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson( + $TableWithEveryColumnTypeTable.$converterid.toJson(id), + ), + 'a_bool': serializer.toJson(aBool), + 'a_date_time': serializer.toJson(aDateTime), + 'a_text': serializer.toJson(aText), + 'an_int': serializer.toJson(anInt), + 'an_int64': serializer.toJson(anInt64), + 'a_real': serializer.toJson(aReal), + 'a_blob': serializer.toJson(aBlob), + 'an_int_enum': serializer.toJson( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toJson(anIntEnum), + ), + 'insert': serializer.toJson?>( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toJson( + aTextWithConverter, + ), + ), + 'a_uuid': serializer.toJson(aUuid), + }; + } + + TableWithEveryColumnTypeData copyWith({ + RowId? id, + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeData( + id: id ?? this.id, + aBool: aBool.present ? aBool.value : this.aBool, + aDateTime: aDateTime.present ? aDateTime.value : this.aDateTime, + aText: aText.present ? aText.value : this.aText, + anInt: anInt.present ? anInt.value : this.anInt, + anInt64: anInt64.present ? anInt64.value : this.anInt64, + aReal: aReal.present ? aReal.value : this.aReal, + aBlob: aBlob.present ? aBlob.value : this.aBlob, + anIntEnum: anIntEnum.present ? anIntEnum.value : this.anIntEnum, + aTextWithConverter: aTextWithConverter.present + ? aTextWithConverter.value + : this.aTextWithConverter, + aUuid: aUuid.present ? aUuid.value : this.aUuid, + ); + TableWithEveryColumnTypeData copyWithCompanion( + TableWithEveryColumnTypeCompanion data, + ) { + return TableWithEveryColumnTypeData( + id: data.id.present ? data.id.value : this.id, + aBool: data.aBool.present ? data.aBool.value : this.aBool, + aDateTime: data.aDateTime.present ? data.aDateTime.value : this.aDateTime, + aText: data.aText.present ? data.aText.value : this.aText, + anInt: data.anInt.present ? data.anInt.value : this.anInt, + anInt64: data.anInt64.present ? data.anInt64.value : this.anInt64, + aReal: data.aReal.present ? data.aReal.value : this.aReal, + aBlob: data.aBlob.present ? data.aBlob.value : this.aBlob, + anIntEnum: data.anIntEnum.present ? data.anIntEnum.value : this.anIntEnum, + aTextWithConverter: data.aTextWithConverter.present + ? data.aTextWithConverter.value + : this.aTextWithConverter, + aUuid: data.aUuid.present ? data.aUuid.value : this.aUuid, + ); + } + + @override + String toString() { + return (StringBuffer('TableWithEveryColumnTypeData(') + ..write('id: $id, ') + ..write('aBool: $aBool, ') + ..write('aDateTime: $aDateTime, ') + ..write('aText: $aText, ') + ..write('anInt: $anInt, ') + ..write('anInt64: $anInt64, ') + ..write('aReal: $aReal, ') + ..write('aBlob: $aBlob, ') + ..write('anIntEnum: $anIntEnum, ') + ..write('aTextWithConverter: $aTextWithConverter, ') + ..write('aUuid: $aUuid') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + aBool, + aDateTime, + aText, + anInt, + anInt64, + aReal, + $driftBlobEquality.hash(aBlob), + anIntEnum, + aTextWithConverter, + aUuid, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TableWithEveryColumnTypeData && + other.id == this.id && + other.aBool == this.aBool && + other.aDateTime == this.aDateTime && + other.aText == this.aText && + other.anInt == this.anInt && + other.anInt64 == this.anInt64 && + other.aReal == this.aReal && + $driftBlobEquality.equals(other.aBlob, this.aBlob) && + other.anIntEnum == this.anIntEnum && + other.aTextWithConverter == this.aTextWithConverter && + other.aUuid == this.aUuid); +} + +class TableWithEveryColumnTypeCompanion + extends UpdateCompanion { + final Value id; + final Value aBool; + final Value aDateTime; + final Value aText; + final Value anInt; + final Value anInt64; + final Value aReal; + final Value aBlob; + final Value anIntEnum; + final Value aTextWithConverter; + final Value aUuid; + const TableWithEveryColumnTypeCompanion({ + this.id = const Value.absent(), + this.aBool = const Value.absent(), + this.aDateTime = const Value.absent(), + this.aText = const Value.absent(), + this.anInt = const Value.absent(), + this.anInt64 = const Value.absent(), + this.aReal = const Value.absent(), + this.aBlob = const Value.absent(), + this.anIntEnum = const Value.absent(), + this.aTextWithConverter = const Value.absent(), + this.aUuid = const Value.absent(), + }); + TableWithEveryColumnTypeCompanion.insert({ + this.id = const Value.absent(), + this.aBool = const Value.absent(), + this.aDateTime = const Value.absent(), + this.aText = const Value.absent(), + this.anInt = const Value.absent(), + this.anInt64 = const Value.absent(), + this.aReal = const Value.absent(), + this.aBlob = const Value.absent(), + this.anIntEnum = const Value.absent(), + this.aTextWithConverter = const Value.absent(), + this.aUuid = const Value.absent(), + }); + static Insertable custom({ + Expression? id, + Expression? aBool, + Expression? aDateTime, + Expression? aText, + Expression? anInt, + Expression? anInt64, + Expression? aReal, + Expression? aBlob, + Expression? anIntEnum, + Expression? aTextWithConverter, + Expression? aUuid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (aBool != null) 'a_bool': aBool, + if (aDateTime != null) 'a_date_time': aDateTime, + if (aText != null) 'a_text': aText, + if (anInt != null) 'an_int': anInt, + if (anInt64 != null) 'an_int64': anInt64, + if (aReal != null) 'a_real': aReal, + if (aBlob != null) 'a_blob': aBlob, + if (anIntEnum != null) 'an_int_enum': anIntEnum, + if (aTextWithConverter != null) 'insert': aTextWithConverter, + if (aUuid != null) 'a_uuid': aUuid, + }); + } + + TableWithEveryColumnTypeCompanion copyWith({ + Value? id, + Value? aBool, + Value? aDateTime, + Value? aText, + Value? anInt, + Value? anInt64, + Value? aReal, + Value? aBlob, + Value? anIntEnum, + Value? aTextWithConverter, + Value? aUuid, + }) { + return TableWithEveryColumnTypeCompanion( + id: id ?? this.id, + aBool: aBool ?? this.aBool, + aDateTime: aDateTime ?? this.aDateTime, + aText: aText ?? this.aText, + anInt: anInt ?? this.anInt, + anInt64: anInt64 ?? this.anInt64, + aReal: aReal ?? this.aReal, + aBlob: aBlob ?? this.aBlob, + anIntEnum: anIntEnum ?? this.anIntEnum, + aTextWithConverter: aTextWithConverter ?? this.aTextWithConverter, + aUuid: aUuid ?? this.aUuid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable( + $TableWithEveryColumnTypeTable.$converterid.toSql(id.value), + ); + } + if (aBool.present) { + map['a_bool'] = Variable(aBool.value); + } + if (aDateTime.present) { + map['a_date_time'] = Variable(aDateTime.value); + } + if (aText.present) { + map['a_text'] = Variable(aText.value); + } + if (anInt.present) { + map['an_int'] = Variable(anInt.value); + } + if (anInt64.present) { + map['an_int64'] = Variable(anInt64.value); + } + if (aReal.present) { + map['a_real'] = Variable(aReal.value); + } + if (aBlob.present) { + map['a_blob'] = Variable(aBlob.value); + } + if (anIntEnum.present) { + map['an_int_enum'] = Variable( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toSql( + anIntEnum.value, + ), + ); + } + if (aTextWithConverter.present) { + map['insert'] = Variable( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toSql( + aTextWithConverter.value, + ), + ); + } + if (aUuid.present) { + map['a_uuid'] = Variable(aUuid.value, uuidType); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TableWithEveryColumnTypeCompanion(') + ..write('id: $id, ') + ..write('aBool: $aBool, ') + ..write('aDateTime: $aDateTime, ') + ..write('aText: $aText, ') + ..write('anInt: $anInt, ') + ..write('anInt64: $anInt64, ') + ..write('aReal: $aReal, ') + ..write('aBlob: $aBlob, ') + ..write('anIntEnum: $anIntEnum, ') + ..write('aTextWithConverter: $aTextWithConverter, ') + ..write('aUuid: $aUuid') + ..write(')')) + .toString(); + } +} + +abstract class _$CrdtBenchmarkDatabase extends GeneratedDatabase { + _$CrdtBenchmarkDatabase(QueryExecutor e) : super(e); + $CrdtBenchmarkDatabaseManager get managers => + $CrdtBenchmarkDatabaseManager(this); + late final $TableWithEveryColumnTypeTable tableWithEveryColumnType = + $TableWithEveryColumnTypeTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + tableWithEveryColumnType, + ]; + @override + DriftDatabaseOptions get options => + const DriftDatabaseOptions(storeDateTimeAsText: true); +} + +typedef $$TableWithEveryColumnTypeTableCreateCompanionBuilder = + TableWithEveryColumnTypeCompanion Function({ + Value id, + Value aBool, + Value aDateTime, + Value aText, + Value anInt, + Value anInt64, + Value aReal, + Value aBlob, + Value anIntEnum, + Value aTextWithConverter, + Value aUuid, + }); +typedef $$TableWithEveryColumnTypeTableUpdateCompanionBuilder = + TableWithEveryColumnTypeCompanion Function({ + Value id, + Value aBool, + Value aDateTime, + Value aText, + Value anInt, + Value anInt64, + Value aReal, + Value aBlob, + Value anIntEnum, + Value aTextWithConverter, + Value aUuid, + }); + +class $$TableWithEveryColumnTypeTableFilterComposer + extends Composer<_$CrdtBenchmarkDatabase, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get aBool => $composableBuilder( + column: $table.aBool, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aDateTime => $composableBuilder( + column: $table.aDateTime, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aText => $composableBuilder( + column: $table.aText, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get anInt => $composableBuilder( + column: $table.anInt, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get anInt64 => $composableBuilder( + column: $table.anInt64, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aReal => $composableBuilder( + column: $table.aReal, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aBlob => $composableBuilder( + column: $table.aBlob, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get anIntEnum => + $composableBuilder( + column: $table.anIntEnum, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnWithTypeConverterFilters + get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get aUuid => $composableBuilder( + column: $table.aUuid, + builder: (column) => ColumnFilters(column), + ); +} + +class $$TableWithEveryColumnTypeTableOrderingComposer + extends Composer<_$CrdtBenchmarkDatabase, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aBool => $composableBuilder( + column: $table.aBool, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aDateTime => $composableBuilder( + column: $table.aDateTime, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aText => $composableBuilder( + column: $table.aText, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anInt => $composableBuilder( + column: $table.anInt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anInt64 => $composableBuilder( + column: $table.anInt64, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aReal => $composableBuilder( + column: $table.aReal, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aBlob => $composableBuilder( + column: $table.aBlob, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anIntEnum => $composableBuilder( + column: $table.anIntEnum, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aUuid => $composableBuilder( + column: $table.aUuid, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$TableWithEveryColumnTypeTableAnnotationComposer + extends Composer<_$CrdtBenchmarkDatabase, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get aBool => + $composableBuilder(column: $table.aBool, builder: (column) => column); + + GeneratedColumn get aDateTime => + $composableBuilder(column: $table.aDateTime, builder: (column) => column); + + GeneratedColumn get aText => + $composableBuilder(column: $table.aText, builder: (column) => column); + + GeneratedColumn get anInt => + $composableBuilder(column: $table.anInt, builder: (column) => column); + + GeneratedColumn get anInt64 => + $composableBuilder(column: $table.anInt64, builder: (column) => column); + + GeneratedColumn get aReal => + $composableBuilder(column: $table.aReal, builder: (column) => column); + + GeneratedColumn get aBlob => + $composableBuilder(column: $table.aBlob, builder: (column) => column); + + GeneratedColumnWithTypeConverter get anIntEnum => + $composableBuilder(column: $table.anIntEnum, builder: (column) => column); + + GeneratedColumnWithTypeConverter + get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => column, + ); + + GeneratedColumn get aUuid => + $composableBuilder(column: $table.aUuid, builder: (column) => column); +} + +class $$TableWithEveryColumnTypeTableTableManager + extends + RootTableManager< + _$CrdtBenchmarkDatabase, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData, + $$TableWithEveryColumnTypeTableFilterComposer, + $$TableWithEveryColumnTypeTableOrderingComposer, + $$TableWithEveryColumnTypeTableAnnotationComposer, + $$TableWithEveryColumnTypeTableCreateCompanionBuilder, + $$TableWithEveryColumnTypeTableUpdateCompanionBuilder, + ( + TableWithEveryColumnTypeData, + BaseReferences< + _$CrdtBenchmarkDatabase, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + >, + ), + TableWithEveryColumnTypeData, + PrefetchHooks Function() + > { + $$TableWithEveryColumnTypeTableTableManager( + _$CrdtBenchmarkDatabase db, + $TableWithEveryColumnTypeTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TableWithEveryColumnTypeTableFilterComposer( + $db: db, + $table: table, + ), + createOrderingComposer: () => + $$TableWithEveryColumnTypeTableOrderingComposer( + $db: db, + $table: table, + ), + createComputedFieldComposer: () => + $$TableWithEveryColumnTypeTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = + const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeCompanion( + id: id, + aBool: aBool, + aDateTime: aDateTime, + aText: aText, + anInt: anInt, + anInt64: anInt64, + aReal: aReal, + aBlob: aBlob, + anIntEnum: anIntEnum, + aTextWithConverter: aTextWithConverter, + aUuid: aUuid, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = + const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeCompanion.insert( + id: id, + aBool: aBool, + aDateTime: aDateTime, + aText: aText, + anInt: anInt, + anInt64: anInt64, + aReal: aReal, + aBlob: aBlob, + anIntEnum: anIntEnum, + aTextWithConverter: aTextWithConverter, + aUuid: aUuid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$TableWithEveryColumnTypeTableProcessedTableManager = + ProcessedTableManager< + _$CrdtBenchmarkDatabase, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData, + $$TableWithEveryColumnTypeTableFilterComposer, + $$TableWithEveryColumnTypeTableOrderingComposer, + $$TableWithEveryColumnTypeTableAnnotationComposer, + $$TableWithEveryColumnTypeTableCreateCompanionBuilder, + $$TableWithEveryColumnTypeTableUpdateCompanionBuilder, + ( + TableWithEveryColumnTypeData, + BaseReferences< + _$CrdtBenchmarkDatabase, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + >, + ), + TableWithEveryColumnTypeData, + PrefetchHooks Function() + >; + +class $CrdtBenchmarkDatabaseManager { + final _$CrdtBenchmarkDatabase _db; + $CrdtBenchmarkDatabaseManager(this._db); + $$TableWithEveryColumnTypeTableTableManager get tableWithEveryColumnType => + $$TableWithEveryColumnTypeTableTableManager( + _db, + _db.tableWithEveryColumnType, + ); +} diff --git a/benchmark/utils/results.dart b/legacy/drift_offline_sync/benchmark/utils/results.dart similarity index 100% rename from benchmark/utils/results.dart rename to legacy/drift_offline_sync/benchmark/utils/results.dart diff --git a/benchmark/utils/runner.dart b/legacy/drift_offline_sync/benchmark/utils/runner.dart similarity index 100% rename from benchmark/utils/runner.dart rename to legacy/drift_offline_sync/benchmark/utils/runner.dart diff --git a/build.yaml b/legacy/drift_offline_sync/build.yaml similarity index 100% rename from build.yaml rename to legacy/drift_offline_sync/build.yaml diff --git a/example/drift_offline_sync_example.dart b/legacy/drift_offline_sync/example/drift_offline_sync_example.dart similarity index 100% rename from example/drift_offline_sync_example.dart rename to legacy/drift_offline_sync/example/drift_offline_sync_example.dart diff --git a/lib/drift_offline_sync.dart b/legacy/drift_offline_sync/lib/drift_offline_sync.dart similarity index 100% rename from lib/drift_offline_sync.dart rename to legacy/drift_offline_sync/lib/drift_offline_sync.dart diff --git a/lib/src/crdt/base.dart b/legacy/drift_offline_sync/lib/src/crdt/base.dart similarity index 100% rename from lib/src/crdt/base.dart rename to legacy/drift_offline_sync/lib/src/crdt/base.dart diff --git a/lib/src/crdt/crdt.dart b/legacy/drift_offline_sync/lib/src/crdt/crdt.dart similarity index 100% rename from lib/src/crdt/crdt.dart rename to legacy/drift_offline_sync/lib/src/crdt/crdt.dart diff --git a/lib/src/database/database.dart b/legacy/drift_offline_sync/lib/src/database/database.dart similarity index 100% rename from lib/src/database/database.dart rename to legacy/drift_offline_sync/lib/src/database/database.dart diff --git a/legacy/drift_offline_sync/lib/src/database/database.g.dart b/legacy/drift_offline_sync/lib/src/database/database.g.dart new file mode 100644 index 0000000..f9f1ee8 --- /dev/null +++ b/legacy/drift_offline_sync/lib/src/database/database.g.dart @@ -0,0 +1,3099 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $CrdtDataTableTable extends CrdtDataTable + with TableInfo<$CrdtDataTableTable, CrdtDataEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CrdtDataTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _tblNameMeta = const VerificationMeta( + 'tblName', + ); + @override + late final GeneratedColumn tblName = GeneratedColumn( + 'table_name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _columnNameMeta = const VerificationMeta( + 'columnName', + ); + @override + late final GeneratedColumn columnName = GeneratedColumn( + 'column_name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _rowIdMeta = const VerificationMeta('rowId'); + @override + late final GeneratedColumn rowId = GeneratedColumn( + 'row_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + @override + late final GeneratedColumnWithTypeConverter hlcTimestamp = + GeneratedColumn( + 'hlc_timestamp', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ).withConverter($CrdtDataTableTable.$converterhlcTimestamp); + static const VerificationMeta _rawValueMeta = const VerificationMeta( + 'rawValue', + ); + @override + late final GeneratedColumn rawValue = GeneratedColumn( + 'raw_value', + aliasedName, + true, + type: DriftSqlType.any, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + userId, + tblName, + columnName, + rowId, + hlcTimestamp, + rawValue, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = '__crdt_data'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('table_name')) { + context.handle( + _tblNameMeta, + tblName.isAcceptableOrUnknown(data['table_name']!, _tblNameMeta), + ); + } else if (isInserting) { + context.missing(_tblNameMeta); + } + if (data.containsKey('column_name')) { + context.handle( + _columnNameMeta, + columnName.isAcceptableOrUnknown(data['column_name']!, _columnNameMeta), + ); + } else if (isInserting) { + context.missing(_columnNameMeta); + } + if (data.containsKey('row_id')) { + context.handle( + _rowIdMeta, + rowId.isAcceptableOrUnknown(data['row_id']!, _rowIdMeta), + ); + } else if (isInserting) { + context.missing(_rowIdMeta); + } + if (data.containsKey('raw_value')) { + context.handle( + _rawValueMeta, + rawValue.isAcceptableOrUnknown(data['raw_value']!, _rawValueMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {userId, tblName, columnName, rowId}; + @override + CrdtDataEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CrdtDataEntry( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + tblName: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}table_name'], + )!, + columnName: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}column_name'], + )!, + rowId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}row_id'], + )!, + hlcTimestamp: $CrdtDataTableTable.$converterhlcTimestamp.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}hlc_timestamp'], + )!, + ), + rawValue: attachedDatabase.typeMapping.read( + DriftSqlType.any, + data['${effectivePrefix}raw_value'], + ), + ); + } + + @override + $CrdtDataTableTable createAlias(String alias) { + return $CrdtDataTableTable(attachedDatabase, alias); + } + + static TypeConverter $converterhlcTimestamp = hlcConverter; + @override + bool get withoutRowId => true; + @override + bool get isStrict => true; +} + +class CrdtDataEntry extends DataClass implements Insertable { + /// Identifier for the user or client that owns the data. + final String userId; + + /// Name of the table that data belongs to. + final String tblName; + + /// Name of the column this data belongs to. + final String columnName; + + /// Unique identifier for the row in the table. + final String rowId; + + /// Hybrid Logical Clock timestamp of the data update. + final Hlc hlcTimestamp; + + /// Raw value of the data. + final DriftAny? rawValue; + const CrdtDataEntry({ + required this.userId, + required this.tblName, + required this.columnName, + required this.rowId, + required this.hlcTimestamp, + this.rawValue, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['table_name'] = Variable(tblName); + map['column_name'] = Variable(columnName); + map['row_id'] = Variable(rowId); + { + map['hlc_timestamp'] = Variable( + $CrdtDataTableTable.$converterhlcTimestamp.toSql(hlcTimestamp), + ); + } + if (!nullToAbsent || rawValue != null) { + map['raw_value'] = Variable(rawValue); + } + return map; + } + + CrdtDataTableCompanion toCompanion(bool nullToAbsent) { + return CrdtDataTableCompanion( + userId: Value(userId), + tblName: Value(tblName), + columnName: Value(columnName), + rowId: Value(rowId), + hlcTimestamp: Value(hlcTimestamp), + rawValue: rawValue == null && nullToAbsent + ? const Value.absent() + : Value(rawValue), + ); + } + + factory CrdtDataEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CrdtDataEntry( + userId: serializer.fromJson(json['user_id']), + tblName: serializer.fromJson(json['table_name']), + columnName: serializer.fromJson(json['column_name']), + rowId: serializer.fromJson(json['row_id']), + hlcTimestamp: serializer.fromJson(json['hlc_timestamp']), + rawValue: serializer.fromJson(json['raw_value']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'user_id': serializer.toJson(userId), + 'table_name': serializer.toJson(tblName), + 'column_name': serializer.toJson(columnName), + 'row_id': serializer.toJson(rowId), + 'hlc_timestamp': serializer.toJson(hlcTimestamp), + 'raw_value': serializer.toJson(rawValue), + }; + } + + CrdtDataEntry copyWith({ + String? userId, + String? tblName, + String? columnName, + String? rowId, + Hlc? hlcTimestamp, + Value rawValue = const Value.absent(), + }) => CrdtDataEntry( + userId: userId ?? this.userId, + tblName: tblName ?? this.tblName, + columnName: columnName ?? this.columnName, + rowId: rowId ?? this.rowId, + hlcTimestamp: hlcTimestamp ?? this.hlcTimestamp, + rawValue: rawValue.present ? rawValue.value : this.rawValue, + ); + CrdtDataEntry copyWithCompanion(CrdtDataTableCompanion data) { + return CrdtDataEntry( + userId: data.userId.present ? data.userId.value : this.userId, + tblName: data.tblName.present ? data.tblName.value : this.tblName, + columnName: data.columnName.present + ? data.columnName.value + : this.columnName, + rowId: data.rowId.present ? data.rowId.value : this.rowId, + hlcTimestamp: data.hlcTimestamp.present + ? data.hlcTimestamp.value + : this.hlcTimestamp, + rawValue: data.rawValue.present ? data.rawValue.value : this.rawValue, + ); + } + + @override + String toString() { + return (StringBuffer('CrdtDataEntry(') + ..write('userId: $userId, ') + ..write('tblName: $tblName, ') + ..write('columnName: $columnName, ') + ..write('rowId: $rowId, ') + ..write('hlcTimestamp: $hlcTimestamp, ') + ..write('rawValue: $rawValue') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(userId, tblName, columnName, rowId, hlcTimestamp, rawValue); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CrdtDataEntry && + other.userId == this.userId && + other.tblName == this.tblName && + other.columnName == this.columnName && + other.rowId == this.rowId && + other.hlcTimestamp == this.hlcTimestamp && + other.rawValue == this.rawValue); +} + +class CrdtDataTableCompanion extends UpdateCompanion { + final Value userId; + final Value tblName; + final Value columnName; + final Value rowId; + final Value hlcTimestamp; + final Value rawValue; + const CrdtDataTableCompanion({ + this.userId = const Value.absent(), + this.tblName = const Value.absent(), + this.columnName = const Value.absent(), + this.rowId = const Value.absent(), + this.hlcTimestamp = const Value.absent(), + this.rawValue = const Value.absent(), + }); + CrdtDataTableCompanion.insert({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required Hlc hlcTimestamp, + this.rawValue = const Value.absent(), + }) : userId = Value(userId), + tblName = Value(tblName), + columnName = Value(columnName), + rowId = Value(rowId), + hlcTimestamp = Value(hlcTimestamp); + static Insertable custom({ + Expression? userId, + Expression? tblName, + Expression? columnName, + Expression? rowId, + Expression? hlcTimestamp, + Expression? rawValue, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (tblName != null) 'table_name': tblName, + if (columnName != null) 'column_name': columnName, + if (rowId != null) 'row_id': rowId, + if (hlcTimestamp != null) 'hlc_timestamp': hlcTimestamp, + if (rawValue != null) 'raw_value': rawValue, + }); + } + + CrdtDataTableCompanion copyWith({ + Value? userId, + Value? tblName, + Value? columnName, + Value? rowId, + Value? hlcTimestamp, + Value? rawValue, + }) { + return CrdtDataTableCompanion( + userId: userId ?? this.userId, + tblName: tblName ?? this.tblName, + columnName: columnName ?? this.columnName, + rowId: rowId ?? this.rowId, + hlcTimestamp: hlcTimestamp ?? this.hlcTimestamp, + rawValue: rawValue ?? this.rawValue, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (tblName.present) { + map['table_name'] = Variable(tblName.value); + } + if (columnName.present) { + map['column_name'] = Variable(columnName.value); + } + if (rowId.present) { + map['row_id'] = Variable(rowId.value); + } + if (hlcTimestamp.present) { + map['hlc_timestamp'] = Variable( + $CrdtDataTableTable.$converterhlcTimestamp.toSql(hlcTimestamp.value), + ); + } + if (rawValue.present) { + map['raw_value'] = Variable(rawValue.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CrdtDataTableCompanion(') + ..write('userId: $userId, ') + ..write('tblName: $tblName, ') + ..write('columnName: $columnName, ') + ..write('rowId: $rowId, ') + ..write('hlcTimestamp: $hlcTimestamp, ') + ..write('rawValue: $rawValue') + ..write(')')) + .toString(); + } +} + +class $CrdtNormalizedDataTableTable extends CrdtNormalizedDataTable + with TableInfo<$CrdtNormalizedDataTableTable, CrdtNormalizedDataEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CrdtNormalizedDataTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _tblNameMeta = const VerificationMeta( + 'tblName', + ); + @override + late final GeneratedColumn tblName = GeneratedColumn( + 'table_name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _columnNameMeta = const VerificationMeta( + 'columnName', + ); + @override + late final GeneratedColumn columnName = GeneratedColumn( + 'column_name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _rowIdMeta = const VerificationMeta('rowId'); + @override + late final GeneratedColumn rowId = GeneratedColumn( + 'row_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _hlcTimestampMeta = const VerificationMeta( + 'hlcTimestamp', + ); + @override + late final GeneratedColumn hlcTimestamp = GeneratedColumn( + 'hlc_timestamp', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _hlcCounterMeta = const VerificationMeta( + 'hlcCounter', + ); + @override + late final GeneratedColumn hlcCounter = GeneratedColumn( + 'hlc_counter', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _hlcNodeIdMeta = const VerificationMeta( + 'hlcNodeId', + ); + @override + late final GeneratedColumn hlcNodeId = GeneratedColumn( + 'hlc_node_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _rawValueMeta = const VerificationMeta( + 'rawValue', + ); + @override + late final GeneratedColumn rawValue = GeneratedColumn( + 'raw_value', + aliasedName, + true, + type: DriftSqlType.any, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + userId, + tblName, + columnName, + rowId, + hlcTimestamp, + hlcCounter, + hlcNodeId, + rawValue, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = '__crdt_normalized_data'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('table_name')) { + context.handle( + _tblNameMeta, + tblName.isAcceptableOrUnknown(data['table_name']!, _tblNameMeta), + ); + } else if (isInserting) { + context.missing(_tblNameMeta); + } + if (data.containsKey('column_name')) { + context.handle( + _columnNameMeta, + columnName.isAcceptableOrUnknown(data['column_name']!, _columnNameMeta), + ); + } else if (isInserting) { + context.missing(_columnNameMeta); + } + if (data.containsKey('row_id')) { + context.handle( + _rowIdMeta, + rowId.isAcceptableOrUnknown(data['row_id']!, _rowIdMeta), + ); + } else if (isInserting) { + context.missing(_rowIdMeta); + } + if (data.containsKey('hlc_timestamp')) { + context.handle( + _hlcTimestampMeta, + hlcTimestamp.isAcceptableOrUnknown( + data['hlc_timestamp']!, + _hlcTimestampMeta, + ), + ); + } else if (isInserting) { + context.missing(_hlcTimestampMeta); + } + if (data.containsKey('hlc_counter')) { + context.handle( + _hlcCounterMeta, + hlcCounter.isAcceptableOrUnknown(data['hlc_counter']!, _hlcCounterMeta), + ); + } else if (isInserting) { + context.missing(_hlcCounterMeta); + } + if (data.containsKey('hlc_node_id')) { + context.handle( + _hlcNodeIdMeta, + hlcNodeId.isAcceptableOrUnknown(data['hlc_node_id']!, _hlcNodeIdMeta), + ); + } else if (isInserting) { + context.missing(_hlcNodeIdMeta); + } + if (data.containsKey('raw_value')) { + context.handle( + _rawValueMeta, + rawValue.isAcceptableOrUnknown(data['raw_value']!, _rawValueMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {userId, tblName, columnName, rowId}; + @override + CrdtNormalizedDataEntry map( + Map data, { + String? tablePrefix, + }) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CrdtNormalizedDataEntry( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + tblName: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}table_name'], + )!, + columnName: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}column_name'], + )!, + rowId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}row_id'], + )!, + hlcTimestamp: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}hlc_timestamp'], + )!, + hlcCounter: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}hlc_counter'], + )!, + hlcNodeId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}hlc_node_id'], + )!, + rawValue: attachedDatabase.typeMapping.read( + DriftSqlType.any, + data['${effectivePrefix}raw_value'], + ), + ); + } + + @override + $CrdtNormalizedDataTableTable createAlias(String alias) { + return $CrdtNormalizedDataTableTable(attachedDatabase, alias); + } + + @override + bool get withoutRowId => true; + @override + bool get isStrict => true; +} + +class CrdtNormalizedDataEntry extends DataClass + implements Insertable { + /// Identifier for the user or client that owns the data. + final String userId; + + /// Name of the table that data belongs to. + final String tblName; + + /// Name of the column this data belongs to. + final String columnName; + + /// Unique identifier for the row in the table. + final String rowId; + + /// Hybrid Logical Clock timestamp component (milliseconds since epoch). + final int hlcTimestamp; + + /// Hybrid Logical Clock counter component. + final int hlcCounter; + + /// Hybrid Logical Clock node ID component. + final String hlcNodeId; + + /// Raw value of the data. + final DriftAny? rawValue; + const CrdtNormalizedDataEntry({ + required this.userId, + required this.tblName, + required this.columnName, + required this.rowId, + required this.hlcTimestamp, + required this.hlcCounter, + required this.hlcNodeId, + this.rawValue, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['table_name'] = Variable(tblName); + map['column_name'] = Variable(columnName); + map['row_id'] = Variable(rowId); + map['hlc_timestamp'] = Variable(hlcTimestamp); + map['hlc_counter'] = Variable(hlcCounter); + map['hlc_node_id'] = Variable(hlcNodeId); + if (!nullToAbsent || rawValue != null) { + map['raw_value'] = Variable(rawValue); + } + return map; + } + + CrdtNormalizedDataTableCompanion toCompanion(bool nullToAbsent) { + return CrdtNormalizedDataTableCompanion( + userId: Value(userId), + tblName: Value(tblName), + columnName: Value(columnName), + rowId: Value(rowId), + hlcTimestamp: Value(hlcTimestamp), + hlcCounter: Value(hlcCounter), + hlcNodeId: Value(hlcNodeId), + rawValue: rawValue == null && nullToAbsent + ? const Value.absent() + : Value(rawValue), + ); + } + + factory CrdtNormalizedDataEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CrdtNormalizedDataEntry( + userId: serializer.fromJson(json['user_id']), + tblName: serializer.fromJson(json['table_name']), + columnName: serializer.fromJson(json['column_name']), + rowId: serializer.fromJson(json['row_id']), + hlcTimestamp: serializer.fromJson(json['hlc_timestamp']), + hlcCounter: serializer.fromJson(json['hlc_counter']), + hlcNodeId: serializer.fromJson(json['hlc_node_id']), + rawValue: serializer.fromJson(json['raw_value']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'user_id': serializer.toJson(userId), + 'table_name': serializer.toJson(tblName), + 'column_name': serializer.toJson(columnName), + 'row_id': serializer.toJson(rowId), + 'hlc_timestamp': serializer.toJson(hlcTimestamp), + 'hlc_counter': serializer.toJson(hlcCounter), + 'hlc_node_id': serializer.toJson(hlcNodeId), + 'raw_value': serializer.toJson(rawValue), + }; + } + + CrdtNormalizedDataEntry copyWith({ + String? userId, + String? tblName, + String? columnName, + String? rowId, + int? hlcTimestamp, + int? hlcCounter, + String? hlcNodeId, + Value rawValue = const Value.absent(), + }) => CrdtNormalizedDataEntry( + userId: userId ?? this.userId, + tblName: tblName ?? this.tblName, + columnName: columnName ?? this.columnName, + rowId: rowId ?? this.rowId, + hlcTimestamp: hlcTimestamp ?? this.hlcTimestamp, + hlcCounter: hlcCounter ?? this.hlcCounter, + hlcNodeId: hlcNodeId ?? this.hlcNodeId, + rawValue: rawValue.present ? rawValue.value : this.rawValue, + ); + CrdtNormalizedDataEntry copyWithCompanion( + CrdtNormalizedDataTableCompanion data, + ) { + return CrdtNormalizedDataEntry( + userId: data.userId.present ? data.userId.value : this.userId, + tblName: data.tblName.present ? data.tblName.value : this.tblName, + columnName: data.columnName.present + ? data.columnName.value + : this.columnName, + rowId: data.rowId.present ? data.rowId.value : this.rowId, + hlcTimestamp: data.hlcTimestamp.present + ? data.hlcTimestamp.value + : this.hlcTimestamp, + hlcCounter: data.hlcCounter.present + ? data.hlcCounter.value + : this.hlcCounter, + hlcNodeId: data.hlcNodeId.present ? data.hlcNodeId.value : this.hlcNodeId, + rawValue: data.rawValue.present ? data.rawValue.value : this.rawValue, + ); + } + + @override + String toString() { + return (StringBuffer('CrdtNormalizedDataEntry(') + ..write('userId: $userId, ') + ..write('tblName: $tblName, ') + ..write('columnName: $columnName, ') + ..write('rowId: $rowId, ') + ..write('hlcTimestamp: $hlcTimestamp, ') + ..write('hlcCounter: $hlcCounter, ') + ..write('hlcNodeId: $hlcNodeId, ') + ..write('rawValue: $rawValue') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + userId, + tblName, + columnName, + rowId, + hlcTimestamp, + hlcCounter, + hlcNodeId, + rawValue, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CrdtNormalizedDataEntry && + other.userId == this.userId && + other.tblName == this.tblName && + other.columnName == this.columnName && + other.rowId == this.rowId && + other.hlcTimestamp == this.hlcTimestamp && + other.hlcCounter == this.hlcCounter && + other.hlcNodeId == this.hlcNodeId && + other.rawValue == this.rawValue); +} + +class CrdtNormalizedDataTableCompanion + extends UpdateCompanion { + final Value userId; + final Value tblName; + final Value columnName; + final Value rowId; + final Value hlcTimestamp; + final Value hlcCounter; + final Value hlcNodeId; + final Value rawValue; + const CrdtNormalizedDataTableCompanion({ + this.userId = const Value.absent(), + this.tblName = const Value.absent(), + this.columnName = const Value.absent(), + this.rowId = const Value.absent(), + this.hlcTimestamp = const Value.absent(), + this.hlcCounter = const Value.absent(), + this.hlcNodeId = const Value.absent(), + this.rawValue = const Value.absent(), + }); + CrdtNormalizedDataTableCompanion.insert({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required int hlcTimestamp, + required int hlcCounter, + required String hlcNodeId, + this.rawValue = const Value.absent(), + }) : userId = Value(userId), + tblName = Value(tblName), + columnName = Value(columnName), + rowId = Value(rowId), + hlcTimestamp = Value(hlcTimestamp), + hlcCounter = Value(hlcCounter), + hlcNodeId = Value(hlcNodeId); + static Insertable custom({ + Expression? userId, + Expression? tblName, + Expression? columnName, + Expression? rowId, + Expression? hlcTimestamp, + Expression? hlcCounter, + Expression? hlcNodeId, + Expression? rawValue, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (tblName != null) 'table_name': tblName, + if (columnName != null) 'column_name': columnName, + if (rowId != null) 'row_id': rowId, + if (hlcTimestamp != null) 'hlc_timestamp': hlcTimestamp, + if (hlcCounter != null) 'hlc_counter': hlcCounter, + if (hlcNodeId != null) 'hlc_node_id': hlcNodeId, + if (rawValue != null) 'raw_value': rawValue, + }); + } + + CrdtNormalizedDataTableCompanion copyWith({ + Value? userId, + Value? tblName, + Value? columnName, + Value? rowId, + Value? hlcTimestamp, + Value? hlcCounter, + Value? hlcNodeId, + Value? rawValue, + }) { + return CrdtNormalizedDataTableCompanion( + userId: userId ?? this.userId, + tblName: tblName ?? this.tblName, + columnName: columnName ?? this.columnName, + rowId: rowId ?? this.rowId, + hlcTimestamp: hlcTimestamp ?? this.hlcTimestamp, + hlcCounter: hlcCounter ?? this.hlcCounter, + hlcNodeId: hlcNodeId ?? this.hlcNodeId, + rawValue: rawValue ?? this.rawValue, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (tblName.present) { + map['table_name'] = Variable(tblName.value); + } + if (columnName.present) { + map['column_name'] = Variable(columnName.value); + } + if (rowId.present) { + map['row_id'] = Variable(rowId.value); + } + if (hlcTimestamp.present) { + map['hlc_timestamp'] = Variable(hlcTimestamp.value); + } + if (hlcCounter.present) { + map['hlc_counter'] = Variable(hlcCounter.value); + } + if (hlcNodeId.present) { + map['hlc_node_id'] = Variable(hlcNodeId.value); + } + if (rawValue.present) { + map['raw_value'] = Variable(rawValue.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CrdtNormalizedDataTableCompanion(') + ..write('userId: $userId, ') + ..write('tblName: $tblName, ') + ..write('columnName: $columnName, ') + ..write('rowId: $rowId, ') + ..write('hlcTimestamp: $hlcTimestamp, ') + ..write('hlcCounter: $hlcCounter, ') + ..write('hlcNodeId: $hlcNodeId, ') + ..write('rawValue: $rawValue') + ..write(')')) + .toString(); + } +} + +class $CrdtControlTableTable extends CrdtControlTable + with TableInfo<$CrdtControlTableTable, CrdtControlEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CrdtControlTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nodeIdMeta = const VerificationMeta('nodeId'); + @override + late final GeneratedColumn nodeId = GeneratedColumn( + 'node_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _crdtTriggersOnMeta = const VerificationMeta( + 'crdtTriggersOn', + ); + @override + late final GeneratedColumn crdtTriggersOn = GeneratedColumn( + 'crdt_triggers_on', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({ + SqlDialect.sqlite: 'CHECK ("crdt_triggers_on" IN (0, 1))', + SqlDialect.postgres: '', + }), + defaultValue: const Constant(true), + ); + static const VerificationMeta _schemaVersionMeta = const VerificationMeta( + 'schemaVersion', + ); + @override + late final GeneratedColumn schemaVersion = GeneratedColumn( + 'schema_version', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + @override + late final GeneratedColumnWithTypeConverter lastSyncHlc = + GeneratedColumn( + 'last_sync_hlc', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter($CrdtControlTableTable.$converterlastSyncHlc); + @override + late final GeneratedColumnWithTypeConverter lastApplyHlc = + GeneratedColumn( + 'last_apply_hlc', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter($CrdtControlTableTable.$converterlastApplyHlc); + @override + List get $columns => [ + userId, + nodeId, + crdtTriggersOn, + schemaVersion, + lastSyncHlc, + lastApplyHlc, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = '__crdt_control'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('node_id')) { + context.handle( + _nodeIdMeta, + nodeId.isAcceptableOrUnknown(data['node_id']!, _nodeIdMeta), + ); + } else if (isInserting) { + context.missing(_nodeIdMeta); + } + if (data.containsKey('crdt_triggers_on')) { + context.handle( + _crdtTriggersOnMeta, + crdtTriggersOn.isAcceptableOrUnknown( + data['crdt_triggers_on']!, + _crdtTriggersOnMeta, + ), + ); + } + if (data.containsKey('schema_version')) { + context.handle( + _schemaVersionMeta, + schemaVersion.isAcceptableOrUnknown( + data['schema_version']!, + _schemaVersionMeta, + ), + ); + } else if (isInserting) { + context.missing(_schemaVersionMeta); + } + return context; + } + + @override + Set get $primaryKey => {userId, nodeId}; + @override + CrdtControlEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CrdtControlEntry( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + nodeId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}node_id'], + )!, + crdtTriggersOn: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}crdt_triggers_on'], + )!, + schemaVersion: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}schema_version'], + )!, + lastSyncHlc: $CrdtControlTableTable.$converterlastSyncHlc.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}last_sync_hlc'], + ), + ), + lastApplyHlc: $CrdtControlTableTable.$converterlastApplyHlc.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}last_apply_hlc'], + ), + ), + ); + } + + @override + $CrdtControlTableTable createAlias(String alias) { + return $CrdtControlTableTable(attachedDatabase, alias); + } + + static TypeConverter $converterlastSyncHlc = + nullableHlcConverter; + static TypeConverter $converterlastApplyHlc = + nullableHlcConverter; +} + +class CrdtControlEntry extends DataClass + implements Insertable { + /// Identifier for the user or client. + final String userId; + + /// Node identifier for the client. + final String nodeId; + + /// Whether CRDT triggers are currently enabled for this user. + final bool crdtTriggersOn; + + /// The schema version of the CRDT data. + final int schemaVersion; + + /// The last HLC timestamp when the user synchronized. + final Hlc? lastSyncHlc; + + /// The last HLC timestamp when merged changes were applied. + final Hlc? lastApplyHlc; + const CrdtControlEntry({ + required this.userId, + required this.nodeId, + required this.crdtTriggersOn, + required this.schemaVersion, + this.lastSyncHlc, + this.lastApplyHlc, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['node_id'] = Variable(nodeId); + map['crdt_triggers_on'] = Variable(crdtTriggersOn); + map['schema_version'] = Variable(schemaVersion); + if (!nullToAbsent || lastSyncHlc != null) { + map['last_sync_hlc'] = Variable( + $CrdtControlTableTable.$converterlastSyncHlc.toSql(lastSyncHlc), + ); + } + if (!nullToAbsent || lastApplyHlc != null) { + map['last_apply_hlc'] = Variable( + $CrdtControlTableTable.$converterlastApplyHlc.toSql(lastApplyHlc), + ); + } + return map; + } + + CrdtControlTableCompanion toCompanion(bool nullToAbsent) { + return CrdtControlTableCompanion( + userId: Value(userId), + nodeId: Value(nodeId), + crdtTriggersOn: Value(crdtTriggersOn), + schemaVersion: Value(schemaVersion), + lastSyncHlc: lastSyncHlc == null && nullToAbsent + ? const Value.absent() + : Value(lastSyncHlc), + lastApplyHlc: lastApplyHlc == null && nullToAbsent + ? const Value.absent() + : Value(lastApplyHlc), + ); + } + + factory CrdtControlEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CrdtControlEntry( + userId: serializer.fromJson(json['user_id']), + nodeId: serializer.fromJson(json['node_id']), + crdtTriggersOn: serializer.fromJson(json['crdt_triggers_on']), + schemaVersion: serializer.fromJson(json['schema_version']), + lastSyncHlc: serializer.fromJson(json['last_sync_hlc']), + lastApplyHlc: serializer.fromJson(json['last_apply_hlc']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'user_id': serializer.toJson(userId), + 'node_id': serializer.toJson(nodeId), + 'crdt_triggers_on': serializer.toJson(crdtTriggersOn), + 'schema_version': serializer.toJson(schemaVersion), + 'last_sync_hlc': serializer.toJson(lastSyncHlc), + 'last_apply_hlc': serializer.toJson(lastApplyHlc), + }; + } + + CrdtControlEntry copyWith({ + String? userId, + String? nodeId, + bool? crdtTriggersOn, + int? schemaVersion, + Value lastSyncHlc = const Value.absent(), + Value lastApplyHlc = const Value.absent(), + }) => CrdtControlEntry( + userId: userId ?? this.userId, + nodeId: nodeId ?? this.nodeId, + crdtTriggersOn: crdtTriggersOn ?? this.crdtTriggersOn, + schemaVersion: schemaVersion ?? this.schemaVersion, + lastSyncHlc: lastSyncHlc.present ? lastSyncHlc.value : this.lastSyncHlc, + lastApplyHlc: lastApplyHlc.present ? lastApplyHlc.value : this.lastApplyHlc, + ); + CrdtControlEntry copyWithCompanion(CrdtControlTableCompanion data) { + return CrdtControlEntry( + userId: data.userId.present ? data.userId.value : this.userId, + nodeId: data.nodeId.present ? data.nodeId.value : this.nodeId, + crdtTriggersOn: data.crdtTriggersOn.present + ? data.crdtTriggersOn.value + : this.crdtTriggersOn, + schemaVersion: data.schemaVersion.present + ? data.schemaVersion.value + : this.schemaVersion, + lastSyncHlc: data.lastSyncHlc.present + ? data.lastSyncHlc.value + : this.lastSyncHlc, + lastApplyHlc: data.lastApplyHlc.present + ? data.lastApplyHlc.value + : this.lastApplyHlc, + ); + } + + @override + String toString() { + return (StringBuffer('CrdtControlEntry(') + ..write('userId: $userId, ') + ..write('nodeId: $nodeId, ') + ..write('crdtTriggersOn: $crdtTriggersOn, ') + ..write('schemaVersion: $schemaVersion, ') + ..write('lastSyncHlc: $lastSyncHlc, ') + ..write('lastApplyHlc: $lastApplyHlc') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + userId, + nodeId, + crdtTriggersOn, + schemaVersion, + lastSyncHlc, + lastApplyHlc, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CrdtControlEntry && + other.userId == this.userId && + other.nodeId == this.nodeId && + other.crdtTriggersOn == this.crdtTriggersOn && + other.schemaVersion == this.schemaVersion && + other.lastSyncHlc == this.lastSyncHlc && + other.lastApplyHlc == this.lastApplyHlc); +} + +class CrdtControlTableCompanion extends UpdateCompanion { + final Value userId; + final Value nodeId; + final Value crdtTriggersOn; + final Value schemaVersion; + final Value lastSyncHlc; + final Value lastApplyHlc; + final Value rowid; + const CrdtControlTableCompanion({ + this.userId = const Value.absent(), + this.nodeId = const Value.absent(), + this.crdtTriggersOn = const Value.absent(), + this.schemaVersion = const Value.absent(), + this.lastSyncHlc = const Value.absent(), + this.lastApplyHlc = const Value.absent(), + this.rowid = const Value.absent(), + }); + CrdtControlTableCompanion.insert({ + required String userId, + required String nodeId, + this.crdtTriggersOn = const Value.absent(), + required int schemaVersion, + this.lastSyncHlc = const Value.absent(), + this.lastApplyHlc = const Value.absent(), + this.rowid = const Value.absent(), + }) : userId = Value(userId), + nodeId = Value(nodeId), + schemaVersion = Value(schemaVersion); + static Insertable custom({ + Expression? userId, + Expression? nodeId, + Expression? crdtTriggersOn, + Expression? schemaVersion, + Expression? lastSyncHlc, + Expression? lastApplyHlc, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (nodeId != null) 'node_id': nodeId, + if (crdtTriggersOn != null) 'crdt_triggers_on': crdtTriggersOn, + if (schemaVersion != null) 'schema_version': schemaVersion, + if (lastSyncHlc != null) 'last_sync_hlc': lastSyncHlc, + if (lastApplyHlc != null) 'last_apply_hlc': lastApplyHlc, + if (rowid != null) 'rowid': rowid, + }); + } + + CrdtControlTableCompanion copyWith({ + Value? userId, + Value? nodeId, + Value? crdtTriggersOn, + Value? schemaVersion, + Value? lastSyncHlc, + Value? lastApplyHlc, + Value? rowid, + }) { + return CrdtControlTableCompanion( + userId: userId ?? this.userId, + nodeId: nodeId ?? this.nodeId, + crdtTriggersOn: crdtTriggersOn ?? this.crdtTriggersOn, + schemaVersion: schemaVersion ?? this.schemaVersion, + lastSyncHlc: lastSyncHlc ?? this.lastSyncHlc, + lastApplyHlc: lastApplyHlc ?? this.lastApplyHlc, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (nodeId.present) { + map['node_id'] = Variable(nodeId.value); + } + if (crdtTriggersOn.present) { + map['crdt_triggers_on'] = Variable(crdtTriggersOn.value); + } + if (schemaVersion.present) { + map['schema_version'] = Variable(schemaVersion.value); + } + if (lastSyncHlc.present) { + map['last_sync_hlc'] = Variable( + $CrdtControlTableTable.$converterlastSyncHlc.toSql(lastSyncHlc.value), + ); + } + if (lastApplyHlc.present) { + map['last_apply_hlc'] = Variable( + $CrdtControlTableTable.$converterlastApplyHlc.toSql(lastApplyHlc.value), + ); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CrdtControlTableCompanion(') + ..write('userId: $userId, ') + ..write('nodeId: $nodeId, ') + ..write('crdtTriggersOn: $crdtTriggersOn, ') + ..write('schemaVersion: $schemaVersion, ') + ..write('lastSyncHlc: $lastSyncHlc, ') + ..write('lastApplyHlc: $lastApplyHlc, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $CrdtHlcStateTableTable extends CrdtHlcStateTable + with TableInfo<$CrdtHlcStateTableTable, CrdtHlcEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CrdtHlcStateTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _lastTimestampMeta = const VerificationMeta( + 'lastTimestamp', + ); + @override + late final GeneratedColumn lastTimestamp = GeneratedColumn( + 'last_timestamp', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _counterMeta = const VerificationMeta( + 'counter', + ); + @override + late final GeneratedColumn counter = GeneratedColumn( + 'counter', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + @override + List get $columns => [userId, lastTimestamp, counter]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = '__hlc_state'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('last_timestamp')) { + context.handle( + _lastTimestampMeta, + lastTimestamp.isAcceptableOrUnknown( + data['last_timestamp']!, + _lastTimestampMeta, + ), + ); + } else if (isInserting) { + context.missing(_lastTimestampMeta); + } + if (data.containsKey('counter')) { + context.handle( + _counterMeta, + counter.isAcceptableOrUnknown(data['counter']!, _counterMeta), + ); + } else if (isInserting) { + context.missing(_counterMeta); + } + return context; + } + + @override + Set get $primaryKey => {userId}; + @override + CrdtHlcEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CrdtHlcEntry( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + lastTimestamp: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}last_timestamp'], + )!, + counter: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}counter'], + )!, + ); + } + + @override + $CrdtHlcStateTableTable createAlias(String alias) { + return $CrdtHlcStateTableTable(attachedDatabase, alias); + } +} + +class CrdtHlcEntry extends DataClass implements Insertable { + /// Identifier for the user or client. + final String userId; + + /// Last HLC timestamp in milliseconds since epoch (logical time component). + final int lastTimestamp; + + /// Counter for events at the same logical time (count component). + final int counter; + const CrdtHlcEntry({ + required this.userId, + required this.lastTimestamp, + required this.counter, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['last_timestamp'] = Variable(lastTimestamp); + map['counter'] = Variable(counter); + return map; + } + + CrdtHlcStateTableCompanion toCompanion(bool nullToAbsent) { + return CrdtHlcStateTableCompanion( + userId: Value(userId), + lastTimestamp: Value(lastTimestamp), + counter: Value(counter), + ); + } + + factory CrdtHlcEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CrdtHlcEntry( + userId: serializer.fromJson(json['user_id']), + lastTimestamp: serializer.fromJson(json['last_timestamp']), + counter: serializer.fromJson(json['counter']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'user_id': serializer.toJson(userId), + 'last_timestamp': serializer.toJson(lastTimestamp), + 'counter': serializer.toJson(counter), + }; + } + + CrdtHlcEntry copyWith({String? userId, int? lastTimestamp, int? counter}) => + CrdtHlcEntry( + userId: userId ?? this.userId, + lastTimestamp: lastTimestamp ?? this.lastTimestamp, + counter: counter ?? this.counter, + ); + CrdtHlcEntry copyWithCompanion(CrdtHlcStateTableCompanion data) { + return CrdtHlcEntry( + userId: data.userId.present ? data.userId.value : this.userId, + lastTimestamp: data.lastTimestamp.present + ? data.lastTimestamp.value + : this.lastTimestamp, + counter: data.counter.present ? data.counter.value : this.counter, + ); + } + + @override + String toString() { + return (StringBuffer('CrdtHlcEntry(') + ..write('userId: $userId, ') + ..write('lastTimestamp: $lastTimestamp, ') + ..write('counter: $counter') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(userId, lastTimestamp, counter); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CrdtHlcEntry && + other.userId == this.userId && + other.lastTimestamp == this.lastTimestamp && + other.counter == this.counter); +} + +class CrdtHlcStateTableCompanion extends UpdateCompanion { + final Value userId; + final Value lastTimestamp; + final Value counter; + final Value rowid; + const CrdtHlcStateTableCompanion({ + this.userId = const Value.absent(), + this.lastTimestamp = const Value.absent(), + this.counter = const Value.absent(), + this.rowid = const Value.absent(), + }); + CrdtHlcStateTableCompanion.insert({ + required String userId, + required int lastTimestamp, + required int counter, + this.rowid = const Value.absent(), + }) : userId = Value(userId), + lastTimestamp = Value(lastTimestamp), + counter = Value(counter); + static Insertable custom({ + Expression? userId, + Expression? lastTimestamp, + Expression? counter, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (lastTimestamp != null) 'last_timestamp': lastTimestamp, + if (counter != null) 'counter': counter, + if (rowid != null) 'rowid': rowid, + }); + } + + CrdtHlcStateTableCompanion copyWith({ + Value? userId, + Value? lastTimestamp, + Value? counter, + Value? rowid, + }) { + return CrdtHlcStateTableCompanion( + userId: userId ?? this.userId, + lastTimestamp: lastTimestamp ?? this.lastTimestamp, + counter: counter ?? this.counter, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (lastTimestamp.present) { + map['last_timestamp'] = Variable(lastTimestamp.value); + } + if (counter.present) { + map['counter'] = Variable(counter.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CrdtHlcStateTableCompanion(') + ..write('userId: $userId, ') + ..write('lastTimestamp: $lastTimestamp, ') + ..write('counter: $counter, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $CrdtMergeHlcTableTable extends CrdtMergeHlcTable + with TableInfo<$CrdtMergeHlcTableTable, CrdtMergeHlcEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CrdtMergeHlcTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nodeIdMeta = const VerificationMeta('nodeId'); + @override + late final GeneratedColumn nodeId = GeneratedColumn( + 'node_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + @override + late final GeneratedColumnWithTypeConverter lastReceivedHlc = + GeneratedColumn( + 'last_received_hlc', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ).withConverter($CrdtMergeHlcTableTable.$converterlastReceivedHlc); + @override + List get $columns => [userId, nodeId, lastReceivedHlc]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = '__crdt_merge_hlc'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('node_id')) { + context.handle( + _nodeIdMeta, + nodeId.isAcceptableOrUnknown(data['node_id']!, _nodeIdMeta), + ); + } else if (isInserting) { + context.missing(_nodeIdMeta); + } + return context; + } + + @override + Set get $primaryKey => {userId, nodeId}; + @override + CrdtMergeHlcEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CrdtMergeHlcEntry( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + nodeId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}node_id'], + )!, + lastReceivedHlc: $CrdtMergeHlcTableTable.$converterlastReceivedHlc + .fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}last_received_hlc'], + )!, + ), + ); + } + + @override + $CrdtMergeHlcTableTable createAlias(String alias) { + return $CrdtMergeHlcTableTable(attachedDatabase, alias); + } + + static TypeConverter $converterlastReceivedHlc = hlcConverter; +} + +class CrdtMergeHlcEntry extends DataClass + implements Insertable { + /// Identifier for the user or client. + final String userId; + + /// Node identifier for the client. + final String nodeId; + + /// The last HLC timestamp received from this node when merging changes. + final Hlc lastReceivedHlc; + const CrdtMergeHlcEntry({ + required this.userId, + required this.nodeId, + required this.lastReceivedHlc, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['node_id'] = Variable(nodeId); + { + map['last_received_hlc'] = Variable( + $CrdtMergeHlcTableTable.$converterlastReceivedHlc.toSql( + lastReceivedHlc, + ), + ); + } + return map; + } + + CrdtMergeHlcTableCompanion toCompanion(bool nullToAbsent) { + return CrdtMergeHlcTableCompanion( + userId: Value(userId), + nodeId: Value(nodeId), + lastReceivedHlc: Value(lastReceivedHlc), + ); + } + + factory CrdtMergeHlcEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CrdtMergeHlcEntry( + userId: serializer.fromJson(json['user_id']), + nodeId: serializer.fromJson(json['node_id']), + lastReceivedHlc: serializer.fromJson(json['last_received_hlc']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'user_id': serializer.toJson(userId), + 'node_id': serializer.toJson(nodeId), + 'last_received_hlc': serializer.toJson(lastReceivedHlc), + }; + } + + CrdtMergeHlcEntry copyWith({ + String? userId, + String? nodeId, + Hlc? lastReceivedHlc, + }) => CrdtMergeHlcEntry( + userId: userId ?? this.userId, + nodeId: nodeId ?? this.nodeId, + lastReceivedHlc: lastReceivedHlc ?? this.lastReceivedHlc, + ); + CrdtMergeHlcEntry copyWithCompanion(CrdtMergeHlcTableCompanion data) { + return CrdtMergeHlcEntry( + userId: data.userId.present ? data.userId.value : this.userId, + nodeId: data.nodeId.present ? data.nodeId.value : this.nodeId, + lastReceivedHlc: data.lastReceivedHlc.present + ? data.lastReceivedHlc.value + : this.lastReceivedHlc, + ); + } + + @override + String toString() { + return (StringBuffer('CrdtMergeHlcEntry(') + ..write('userId: $userId, ') + ..write('nodeId: $nodeId, ') + ..write('lastReceivedHlc: $lastReceivedHlc') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(userId, nodeId, lastReceivedHlc); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CrdtMergeHlcEntry && + other.userId == this.userId && + other.nodeId == this.nodeId && + other.lastReceivedHlc == this.lastReceivedHlc); +} + +class CrdtMergeHlcTableCompanion extends UpdateCompanion { + final Value userId; + final Value nodeId; + final Value lastReceivedHlc; + final Value rowid; + const CrdtMergeHlcTableCompanion({ + this.userId = const Value.absent(), + this.nodeId = const Value.absent(), + this.lastReceivedHlc = const Value.absent(), + this.rowid = const Value.absent(), + }); + CrdtMergeHlcTableCompanion.insert({ + required String userId, + required String nodeId, + required Hlc lastReceivedHlc, + this.rowid = const Value.absent(), + }) : userId = Value(userId), + nodeId = Value(nodeId), + lastReceivedHlc = Value(lastReceivedHlc); + static Insertable custom({ + Expression? userId, + Expression? nodeId, + Expression? lastReceivedHlc, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (nodeId != null) 'node_id': nodeId, + if (lastReceivedHlc != null) 'last_received_hlc': lastReceivedHlc, + if (rowid != null) 'rowid': rowid, + }); + } + + CrdtMergeHlcTableCompanion copyWith({ + Value? userId, + Value? nodeId, + Value? lastReceivedHlc, + Value? rowid, + }) { + return CrdtMergeHlcTableCompanion( + userId: userId ?? this.userId, + nodeId: nodeId ?? this.nodeId, + lastReceivedHlc: lastReceivedHlc ?? this.lastReceivedHlc, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (nodeId.present) { + map['node_id'] = Variable(nodeId.value); + } + if (lastReceivedHlc.present) { + map['last_received_hlc'] = Variable( + $CrdtMergeHlcTableTable.$converterlastReceivedHlc.toSql( + lastReceivedHlc.value, + ), + ); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CrdtMergeHlcTableCompanion(') + ..write('userId: $userId, ') + ..write('nodeId: $nodeId, ') + ..write('lastReceivedHlc: $lastReceivedHlc, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +abstract class _$CrdtDatabase extends GeneratedDatabase { + _$CrdtDatabase(QueryExecutor e) : super(e); + $CrdtDatabaseManager get managers => $CrdtDatabaseManager(this); + late final $CrdtDataTableTable crdtDataTable = $CrdtDataTableTable(this); + late final $CrdtNormalizedDataTableTable crdtNormalizedDataTable = + $CrdtNormalizedDataTableTable(this); + late final $CrdtControlTableTable crdtControlTable = $CrdtControlTableTable( + this, + ); + late final $CrdtHlcStateTableTable crdtHlcStateTable = + $CrdtHlcStateTableTable(this); + late final $CrdtMergeHlcTableTable crdtMergeHlcTable = + $CrdtMergeHlcTableTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + crdtDataTable, + crdtNormalizedDataTable, + crdtControlTable, + crdtHlcStateTable, + crdtMergeHlcTable, + ]; + @override + DriftDatabaseOptions get options => + const DriftDatabaseOptions(storeDateTimeAsText: true); +} + +typedef $$CrdtDataTableTableCreateCompanionBuilder = + CrdtDataTableCompanion Function({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required Hlc hlcTimestamp, + Value rawValue, + }); +typedef $$CrdtDataTableTableUpdateCompanionBuilder = + CrdtDataTableCompanion Function({ + Value userId, + Value tblName, + Value columnName, + Value rowId, + Value hlcTimestamp, + Value rawValue, + }); + +class $$CrdtDataTableTableFilterComposer + extends Composer<_$CrdtDatabase, $CrdtDataTableTable> { + $$CrdtDataTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get tblName => $composableBuilder( + column: $table.tblName, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get rowId => $composableBuilder( + column: $table.rowId, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get hlcTimestamp => + $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get rawValue => $composableBuilder( + column: $table.rawValue, + builder: (column) => ColumnFilters(column), + ); +} + +class $$CrdtDataTableTableOrderingComposer + extends Composer<_$CrdtDatabase, $CrdtDataTableTable> { + $$CrdtDataTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get tblName => $composableBuilder( + column: $table.tblName, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get rowId => $composableBuilder( + column: $table.rowId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get hlcTimestamp => $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get rawValue => $composableBuilder( + column: $table.rawValue, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CrdtDataTableTableAnnotationComposer + extends Composer<_$CrdtDatabase, $CrdtDataTableTable> { + $$CrdtDataTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get tblName => + $composableBuilder(column: $table.tblName, builder: (column) => column); + + GeneratedColumn get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => column, + ); + + GeneratedColumn get rowId => + $composableBuilder(column: $table.rowId, builder: (column) => column); + + GeneratedColumnWithTypeConverter get hlcTimestamp => + $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => column, + ); + + GeneratedColumn get rawValue => + $composableBuilder(column: $table.rawValue, builder: (column) => column); +} + +class $$CrdtDataTableTableTableManager + extends + RootTableManager< + _$CrdtDatabase, + $CrdtDataTableTable, + CrdtDataEntry, + $$CrdtDataTableTableFilterComposer, + $$CrdtDataTableTableOrderingComposer, + $$CrdtDataTableTableAnnotationComposer, + $$CrdtDataTableTableCreateCompanionBuilder, + $$CrdtDataTableTableUpdateCompanionBuilder, + ( + CrdtDataEntry, + BaseReferences<_$CrdtDatabase, $CrdtDataTableTable, CrdtDataEntry>, + ), + CrdtDataEntry, + PrefetchHooks Function() + > { + $$CrdtDataTableTableTableManager(_$CrdtDatabase db, $CrdtDataTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CrdtDataTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CrdtDataTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CrdtDataTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value tblName = const Value.absent(), + Value columnName = const Value.absent(), + Value rowId = const Value.absent(), + Value hlcTimestamp = const Value.absent(), + Value rawValue = const Value.absent(), + }) => CrdtDataTableCompanion( + userId: userId, + tblName: tblName, + columnName: columnName, + rowId: rowId, + hlcTimestamp: hlcTimestamp, + rawValue: rawValue, + ), + createCompanionCallback: + ({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required Hlc hlcTimestamp, + Value rawValue = const Value.absent(), + }) => CrdtDataTableCompanion.insert( + userId: userId, + tblName: tblName, + columnName: columnName, + rowId: rowId, + hlcTimestamp: hlcTimestamp, + rawValue: rawValue, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CrdtDataTableTableProcessedTableManager = + ProcessedTableManager< + _$CrdtDatabase, + $CrdtDataTableTable, + CrdtDataEntry, + $$CrdtDataTableTableFilterComposer, + $$CrdtDataTableTableOrderingComposer, + $$CrdtDataTableTableAnnotationComposer, + $$CrdtDataTableTableCreateCompanionBuilder, + $$CrdtDataTableTableUpdateCompanionBuilder, + ( + CrdtDataEntry, + BaseReferences<_$CrdtDatabase, $CrdtDataTableTable, CrdtDataEntry>, + ), + CrdtDataEntry, + PrefetchHooks Function() + >; +typedef $$CrdtNormalizedDataTableTableCreateCompanionBuilder = + CrdtNormalizedDataTableCompanion Function({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required int hlcTimestamp, + required int hlcCounter, + required String hlcNodeId, + Value rawValue, + }); +typedef $$CrdtNormalizedDataTableTableUpdateCompanionBuilder = + CrdtNormalizedDataTableCompanion Function({ + Value userId, + Value tblName, + Value columnName, + Value rowId, + Value hlcTimestamp, + Value hlcCounter, + Value hlcNodeId, + Value rawValue, + }); + +class $$CrdtNormalizedDataTableTableFilterComposer + extends Composer<_$CrdtDatabase, $CrdtNormalizedDataTableTable> { + $$CrdtNormalizedDataTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get tblName => $composableBuilder( + column: $table.tblName, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get rowId => $composableBuilder( + column: $table.rowId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get hlcTimestamp => $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get hlcCounter => $composableBuilder( + column: $table.hlcCounter, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get hlcNodeId => $composableBuilder( + column: $table.hlcNodeId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get rawValue => $composableBuilder( + column: $table.rawValue, + builder: (column) => ColumnFilters(column), + ); +} + +class $$CrdtNormalizedDataTableTableOrderingComposer + extends Composer<_$CrdtDatabase, $CrdtNormalizedDataTableTable> { + $$CrdtNormalizedDataTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get tblName => $composableBuilder( + column: $table.tblName, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get rowId => $composableBuilder( + column: $table.rowId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get hlcTimestamp => $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get hlcCounter => $composableBuilder( + column: $table.hlcCounter, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get hlcNodeId => $composableBuilder( + column: $table.hlcNodeId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get rawValue => $composableBuilder( + column: $table.rawValue, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CrdtNormalizedDataTableTableAnnotationComposer + extends Composer<_$CrdtDatabase, $CrdtNormalizedDataTableTable> { + $$CrdtNormalizedDataTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get tblName => + $composableBuilder(column: $table.tblName, builder: (column) => column); + + GeneratedColumn get columnName => $composableBuilder( + column: $table.columnName, + builder: (column) => column, + ); + + GeneratedColumn get rowId => + $composableBuilder(column: $table.rowId, builder: (column) => column); + + GeneratedColumn get hlcTimestamp => $composableBuilder( + column: $table.hlcTimestamp, + builder: (column) => column, + ); + + GeneratedColumn get hlcCounter => $composableBuilder( + column: $table.hlcCounter, + builder: (column) => column, + ); + + GeneratedColumn get hlcNodeId => + $composableBuilder(column: $table.hlcNodeId, builder: (column) => column); + + GeneratedColumn get rawValue => + $composableBuilder(column: $table.rawValue, builder: (column) => column); +} + +class $$CrdtNormalizedDataTableTableTableManager + extends + RootTableManager< + _$CrdtDatabase, + $CrdtNormalizedDataTableTable, + CrdtNormalizedDataEntry, + $$CrdtNormalizedDataTableTableFilterComposer, + $$CrdtNormalizedDataTableTableOrderingComposer, + $$CrdtNormalizedDataTableTableAnnotationComposer, + $$CrdtNormalizedDataTableTableCreateCompanionBuilder, + $$CrdtNormalizedDataTableTableUpdateCompanionBuilder, + ( + CrdtNormalizedDataEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtNormalizedDataTableTable, + CrdtNormalizedDataEntry + >, + ), + CrdtNormalizedDataEntry, + PrefetchHooks Function() + > { + $$CrdtNormalizedDataTableTableTableManager( + _$CrdtDatabase db, + $CrdtNormalizedDataTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CrdtNormalizedDataTableTableFilterComposer( + $db: db, + $table: table, + ), + createOrderingComposer: () => + $$CrdtNormalizedDataTableTableOrderingComposer( + $db: db, + $table: table, + ), + createComputedFieldComposer: () => + $$CrdtNormalizedDataTableTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value tblName = const Value.absent(), + Value columnName = const Value.absent(), + Value rowId = const Value.absent(), + Value hlcTimestamp = const Value.absent(), + Value hlcCounter = const Value.absent(), + Value hlcNodeId = const Value.absent(), + Value rawValue = const Value.absent(), + }) => CrdtNormalizedDataTableCompanion( + userId: userId, + tblName: tblName, + columnName: columnName, + rowId: rowId, + hlcTimestamp: hlcTimestamp, + hlcCounter: hlcCounter, + hlcNodeId: hlcNodeId, + rawValue: rawValue, + ), + createCompanionCallback: + ({ + required String userId, + required String tblName, + required String columnName, + required String rowId, + required int hlcTimestamp, + required int hlcCounter, + required String hlcNodeId, + Value rawValue = const Value.absent(), + }) => CrdtNormalizedDataTableCompanion.insert( + userId: userId, + tblName: tblName, + columnName: columnName, + rowId: rowId, + hlcTimestamp: hlcTimestamp, + hlcCounter: hlcCounter, + hlcNodeId: hlcNodeId, + rawValue: rawValue, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CrdtNormalizedDataTableTableProcessedTableManager = + ProcessedTableManager< + _$CrdtDatabase, + $CrdtNormalizedDataTableTable, + CrdtNormalizedDataEntry, + $$CrdtNormalizedDataTableTableFilterComposer, + $$CrdtNormalizedDataTableTableOrderingComposer, + $$CrdtNormalizedDataTableTableAnnotationComposer, + $$CrdtNormalizedDataTableTableCreateCompanionBuilder, + $$CrdtNormalizedDataTableTableUpdateCompanionBuilder, + ( + CrdtNormalizedDataEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtNormalizedDataTableTable, + CrdtNormalizedDataEntry + >, + ), + CrdtNormalizedDataEntry, + PrefetchHooks Function() + >; +typedef $$CrdtControlTableTableCreateCompanionBuilder = + CrdtControlTableCompanion Function({ + required String userId, + required String nodeId, + Value crdtTriggersOn, + required int schemaVersion, + Value lastSyncHlc, + Value lastApplyHlc, + Value rowid, + }); +typedef $$CrdtControlTableTableUpdateCompanionBuilder = + CrdtControlTableCompanion Function({ + Value userId, + Value nodeId, + Value crdtTriggersOn, + Value schemaVersion, + Value lastSyncHlc, + Value lastApplyHlc, + Value rowid, + }); + +class $$CrdtControlTableTableFilterComposer + extends Composer<_$CrdtDatabase, $CrdtControlTableTable> { + $$CrdtControlTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get nodeId => $composableBuilder( + column: $table.nodeId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get crdtTriggersOn => $composableBuilder( + column: $table.crdtTriggersOn, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get schemaVersion => $composableBuilder( + column: $table.schemaVersion, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get lastSyncHlc => + $composableBuilder( + column: $table.lastSyncHlc, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnWithTypeConverterFilters get lastApplyHlc => + $composableBuilder( + column: $table.lastApplyHlc, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); +} + +class $$CrdtControlTableTableOrderingComposer + extends Composer<_$CrdtDatabase, $CrdtControlTableTable> { + $$CrdtControlTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get nodeId => $composableBuilder( + column: $table.nodeId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get crdtTriggersOn => $composableBuilder( + column: $table.crdtTriggersOn, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get schemaVersion => $composableBuilder( + column: $table.schemaVersion, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get lastSyncHlc => $composableBuilder( + column: $table.lastSyncHlc, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get lastApplyHlc => $composableBuilder( + column: $table.lastApplyHlc, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CrdtControlTableTableAnnotationComposer + extends Composer<_$CrdtDatabase, $CrdtControlTableTable> { + $$CrdtControlTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get nodeId => + $composableBuilder(column: $table.nodeId, builder: (column) => column); + + GeneratedColumn get crdtTriggersOn => $composableBuilder( + column: $table.crdtTriggersOn, + builder: (column) => column, + ); + + GeneratedColumn get schemaVersion => $composableBuilder( + column: $table.schemaVersion, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get lastSyncHlc => + $composableBuilder( + column: $table.lastSyncHlc, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get lastApplyHlc => + $composableBuilder( + column: $table.lastApplyHlc, + builder: (column) => column, + ); +} + +class $$CrdtControlTableTableTableManager + extends + RootTableManager< + _$CrdtDatabase, + $CrdtControlTableTable, + CrdtControlEntry, + $$CrdtControlTableTableFilterComposer, + $$CrdtControlTableTableOrderingComposer, + $$CrdtControlTableTableAnnotationComposer, + $$CrdtControlTableTableCreateCompanionBuilder, + $$CrdtControlTableTableUpdateCompanionBuilder, + ( + CrdtControlEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtControlTableTable, + CrdtControlEntry + >, + ), + CrdtControlEntry, + PrefetchHooks Function() + > { + $$CrdtControlTableTableTableManager( + _$CrdtDatabase db, + $CrdtControlTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CrdtControlTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CrdtControlTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CrdtControlTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value nodeId = const Value.absent(), + Value crdtTriggersOn = const Value.absent(), + Value schemaVersion = const Value.absent(), + Value lastSyncHlc = const Value.absent(), + Value lastApplyHlc = const Value.absent(), + Value rowid = const Value.absent(), + }) => CrdtControlTableCompanion( + userId: userId, + nodeId: nodeId, + crdtTriggersOn: crdtTriggersOn, + schemaVersion: schemaVersion, + lastSyncHlc: lastSyncHlc, + lastApplyHlc: lastApplyHlc, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String userId, + required String nodeId, + Value crdtTriggersOn = const Value.absent(), + required int schemaVersion, + Value lastSyncHlc = const Value.absent(), + Value lastApplyHlc = const Value.absent(), + Value rowid = const Value.absent(), + }) => CrdtControlTableCompanion.insert( + userId: userId, + nodeId: nodeId, + crdtTriggersOn: crdtTriggersOn, + schemaVersion: schemaVersion, + lastSyncHlc: lastSyncHlc, + lastApplyHlc: lastApplyHlc, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CrdtControlTableTableProcessedTableManager = + ProcessedTableManager< + _$CrdtDatabase, + $CrdtControlTableTable, + CrdtControlEntry, + $$CrdtControlTableTableFilterComposer, + $$CrdtControlTableTableOrderingComposer, + $$CrdtControlTableTableAnnotationComposer, + $$CrdtControlTableTableCreateCompanionBuilder, + $$CrdtControlTableTableUpdateCompanionBuilder, + ( + CrdtControlEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtControlTableTable, + CrdtControlEntry + >, + ), + CrdtControlEntry, + PrefetchHooks Function() + >; +typedef $$CrdtHlcStateTableTableCreateCompanionBuilder = + CrdtHlcStateTableCompanion Function({ + required String userId, + required int lastTimestamp, + required int counter, + Value rowid, + }); +typedef $$CrdtHlcStateTableTableUpdateCompanionBuilder = + CrdtHlcStateTableCompanion Function({ + Value userId, + Value lastTimestamp, + Value counter, + Value rowid, + }); + +class $$CrdtHlcStateTableTableFilterComposer + extends Composer<_$CrdtDatabase, $CrdtHlcStateTableTable> { + $$CrdtHlcStateTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get lastTimestamp => $composableBuilder( + column: $table.lastTimestamp, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get counter => $composableBuilder( + column: $table.counter, + builder: (column) => ColumnFilters(column), + ); +} + +class $$CrdtHlcStateTableTableOrderingComposer + extends Composer<_$CrdtDatabase, $CrdtHlcStateTableTable> { + $$CrdtHlcStateTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get lastTimestamp => $composableBuilder( + column: $table.lastTimestamp, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get counter => $composableBuilder( + column: $table.counter, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CrdtHlcStateTableTableAnnotationComposer + extends Composer<_$CrdtDatabase, $CrdtHlcStateTableTable> { + $$CrdtHlcStateTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get lastTimestamp => $composableBuilder( + column: $table.lastTimestamp, + builder: (column) => column, + ); + + GeneratedColumn get counter => + $composableBuilder(column: $table.counter, builder: (column) => column); +} + +class $$CrdtHlcStateTableTableTableManager + extends + RootTableManager< + _$CrdtDatabase, + $CrdtHlcStateTableTable, + CrdtHlcEntry, + $$CrdtHlcStateTableTableFilterComposer, + $$CrdtHlcStateTableTableOrderingComposer, + $$CrdtHlcStateTableTableAnnotationComposer, + $$CrdtHlcStateTableTableCreateCompanionBuilder, + $$CrdtHlcStateTableTableUpdateCompanionBuilder, + ( + CrdtHlcEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtHlcStateTableTable, + CrdtHlcEntry + >, + ), + CrdtHlcEntry, + PrefetchHooks Function() + > { + $$CrdtHlcStateTableTableTableManager( + _$CrdtDatabase db, + $CrdtHlcStateTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CrdtHlcStateTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CrdtHlcStateTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CrdtHlcStateTableTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value lastTimestamp = const Value.absent(), + Value counter = const Value.absent(), + Value rowid = const Value.absent(), + }) => CrdtHlcStateTableCompanion( + userId: userId, + lastTimestamp: lastTimestamp, + counter: counter, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String userId, + required int lastTimestamp, + required int counter, + Value rowid = const Value.absent(), + }) => CrdtHlcStateTableCompanion.insert( + userId: userId, + lastTimestamp: lastTimestamp, + counter: counter, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CrdtHlcStateTableTableProcessedTableManager = + ProcessedTableManager< + _$CrdtDatabase, + $CrdtHlcStateTableTable, + CrdtHlcEntry, + $$CrdtHlcStateTableTableFilterComposer, + $$CrdtHlcStateTableTableOrderingComposer, + $$CrdtHlcStateTableTableAnnotationComposer, + $$CrdtHlcStateTableTableCreateCompanionBuilder, + $$CrdtHlcStateTableTableUpdateCompanionBuilder, + ( + CrdtHlcEntry, + BaseReferences<_$CrdtDatabase, $CrdtHlcStateTableTable, CrdtHlcEntry>, + ), + CrdtHlcEntry, + PrefetchHooks Function() + >; +typedef $$CrdtMergeHlcTableTableCreateCompanionBuilder = + CrdtMergeHlcTableCompanion Function({ + required String userId, + required String nodeId, + required Hlc lastReceivedHlc, + Value rowid, + }); +typedef $$CrdtMergeHlcTableTableUpdateCompanionBuilder = + CrdtMergeHlcTableCompanion Function({ + Value userId, + Value nodeId, + Value lastReceivedHlc, + Value rowid, + }); + +class $$CrdtMergeHlcTableTableFilterComposer + extends Composer<_$CrdtDatabase, $CrdtMergeHlcTableTable> { + $$CrdtMergeHlcTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get nodeId => $composableBuilder( + column: $table.nodeId, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get lastReceivedHlc => + $composableBuilder( + column: $table.lastReceivedHlc, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); +} + +class $$CrdtMergeHlcTableTableOrderingComposer + extends Composer<_$CrdtDatabase, $CrdtMergeHlcTableTable> { + $$CrdtMergeHlcTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get nodeId => $composableBuilder( + column: $table.nodeId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get lastReceivedHlc => $composableBuilder( + column: $table.lastReceivedHlc, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CrdtMergeHlcTableTableAnnotationComposer + extends Composer<_$CrdtDatabase, $CrdtMergeHlcTableTable> { + $$CrdtMergeHlcTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get nodeId => + $composableBuilder(column: $table.nodeId, builder: (column) => column); + + GeneratedColumnWithTypeConverter get lastReceivedHlc => + $composableBuilder( + column: $table.lastReceivedHlc, + builder: (column) => column, + ); +} + +class $$CrdtMergeHlcTableTableTableManager + extends + RootTableManager< + _$CrdtDatabase, + $CrdtMergeHlcTableTable, + CrdtMergeHlcEntry, + $$CrdtMergeHlcTableTableFilterComposer, + $$CrdtMergeHlcTableTableOrderingComposer, + $$CrdtMergeHlcTableTableAnnotationComposer, + $$CrdtMergeHlcTableTableCreateCompanionBuilder, + $$CrdtMergeHlcTableTableUpdateCompanionBuilder, + ( + CrdtMergeHlcEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtMergeHlcTableTable, + CrdtMergeHlcEntry + >, + ), + CrdtMergeHlcEntry, + PrefetchHooks Function() + > { + $$CrdtMergeHlcTableTableTableManager( + _$CrdtDatabase db, + $CrdtMergeHlcTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CrdtMergeHlcTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CrdtMergeHlcTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CrdtMergeHlcTableTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value nodeId = const Value.absent(), + Value lastReceivedHlc = const Value.absent(), + Value rowid = const Value.absent(), + }) => CrdtMergeHlcTableCompanion( + userId: userId, + nodeId: nodeId, + lastReceivedHlc: lastReceivedHlc, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String userId, + required String nodeId, + required Hlc lastReceivedHlc, + Value rowid = const Value.absent(), + }) => CrdtMergeHlcTableCompanion.insert( + userId: userId, + nodeId: nodeId, + lastReceivedHlc: lastReceivedHlc, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CrdtMergeHlcTableTableProcessedTableManager = + ProcessedTableManager< + _$CrdtDatabase, + $CrdtMergeHlcTableTable, + CrdtMergeHlcEntry, + $$CrdtMergeHlcTableTableFilterComposer, + $$CrdtMergeHlcTableTableOrderingComposer, + $$CrdtMergeHlcTableTableAnnotationComposer, + $$CrdtMergeHlcTableTableCreateCompanionBuilder, + $$CrdtMergeHlcTableTableUpdateCompanionBuilder, + ( + CrdtMergeHlcEntry, + BaseReferences< + _$CrdtDatabase, + $CrdtMergeHlcTableTable, + CrdtMergeHlcEntry + >, + ), + CrdtMergeHlcEntry, + PrefetchHooks Function() + >; + +class $CrdtDatabaseManager { + final _$CrdtDatabase _db; + $CrdtDatabaseManager(this._db); + $$CrdtDataTableTableTableManager get crdtDataTable => + $$CrdtDataTableTableTableManager(_db, _db.crdtDataTable); + $$CrdtNormalizedDataTableTableTableManager get crdtNormalizedDataTable => + $$CrdtNormalizedDataTableTableTableManager( + _db, + _db.crdtNormalizedDataTable, + ); + $$CrdtControlTableTableTableManager get crdtControlTable => + $$CrdtControlTableTableTableManager(_db, _db.crdtControlTable); + $$CrdtHlcStateTableTableTableManager get crdtHlcStateTable => + $$CrdtHlcStateTableTableTableManager(_db, _db.crdtHlcStateTable); + $$CrdtMergeHlcTableTableTableManager get crdtMergeHlcTable => + $$CrdtMergeHlcTableTableTableManager(_db, _db.crdtMergeHlcTable); +} diff --git a/lib/src/database/extensions/convert.dart b/legacy/drift_offline_sync/lib/src/database/extensions/convert.dart similarity index 100% rename from lib/src/database/extensions/convert.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/convert.dart diff --git a/lib/src/database/extensions/entry.dart b/legacy/drift_offline_sync/lib/src/database/extensions/entry.dart similarity index 100% rename from lib/src/database/extensions/entry.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/entry.dart diff --git a/lib/src/database/extensions/extract.dart b/legacy/drift_offline_sync/lib/src/database/extensions/extract.dart similarity index 100% rename from lib/src/database/extensions/extract.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/extract.dart diff --git a/lib/src/database/extensions/sync.dart b/legacy/drift_offline_sync/lib/src/database/extensions/sync.dart similarity index 100% rename from lib/src/database/extensions/sync.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/sync.dart diff --git a/lib/src/database/extensions/transactions.dart b/legacy/drift_offline_sync/lib/src/database/extensions/transactions.dart similarity index 100% rename from lib/src/database/extensions/transactions.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/transactions.dart diff --git a/lib/src/database/extensions/triggers.dart b/legacy/drift_offline_sync/lib/src/database/extensions/triggers.dart similarity index 100% rename from lib/src/database/extensions/triggers.dart rename to legacy/drift_offline_sync/lib/src/database/extensions/triggers.dart diff --git a/lib/src/database/tables/control.dart b/legacy/drift_offline_sync/lib/src/database/tables/control.dart similarity index 100% rename from lib/src/database/tables/control.dart rename to legacy/drift_offline_sync/lib/src/database/tables/control.dart diff --git a/lib/src/database/tables/data.dart b/legacy/drift_offline_sync/lib/src/database/tables/data.dart similarity index 100% rename from lib/src/database/tables/data.dart rename to legacy/drift_offline_sync/lib/src/database/tables/data.dart diff --git a/lib/src/database/tables/hlc.dart b/legacy/drift_offline_sync/lib/src/database/tables/hlc.dart similarity index 100% rename from lib/src/database/tables/hlc.dart rename to legacy/drift_offline_sync/lib/src/database/tables/hlc.dart diff --git a/lib/src/database/tables/merge.dart b/legacy/drift_offline_sync/lib/src/database/tables/merge.dart similarity index 100% rename from lib/src/database/tables/merge.dart rename to legacy/drift_offline_sync/lib/src/database/tables/merge.dart diff --git a/lib/src/database/triggers.dart b/legacy/drift_offline_sync/lib/src/database/triggers.dart similarity index 100% rename from lib/src/database/triggers.dart rename to legacy/drift_offline_sync/lib/src/database/triggers.dart diff --git a/lib/src/hlc/converter.dart b/legacy/drift_offline_sync/lib/src/hlc/converter.dart similarity index 100% rename from lib/src/hlc/converter.dart rename to legacy/drift_offline_sync/lib/src/hlc/converter.dart diff --git a/lib/src/hlc/exceptions.dart b/legacy/drift_offline_sync/lib/src/hlc/exceptions.dart similarity index 100% rename from lib/src/hlc/exceptions.dart rename to legacy/drift_offline_sync/lib/src/hlc/exceptions.dart diff --git a/lib/src/hlc/hlc.dart b/legacy/drift_offline_sync/lib/src/hlc/hlc.dart similarity index 100% rename from lib/src/hlc/hlc.dart rename to legacy/drift_offline_sync/lib/src/hlc/hlc.dart diff --git a/lib/src/migrator.dart b/legacy/drift_offline_sync/lib/src/migrator.dart similarity index 100% rename from lib/src/migrator.dart rename to legacy/drift_offline_sync/lib/src/migrator.dart diff --git a/lib/src/utils/sql_builder.dart b/legacy/drift_offline_sync/lib/src/utils/sql_builder.dart similarity index 100% rename from lib/src/utils/sql_builder.dart rename to legacy/drift_offline_sync/lib/src/utils/sql_builder.dart diff --git a/pubspec.yaml b/legacy/drift_offline_sync/pubspec.yaml similarity index 100% rename from pubspec.yaml rename to legacy/drift_offline_sync/pubspec.yaml diff --git a/test/crdt/crdt_data_convert_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_data_convert_test.dart similarity index 100% rename from test/crdt/crdt_data_convert_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_data_convert_test.dart diff --git a/test/crdt/crdt_data_extract_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_data_extract_test.dart similarity index 100% rename from test/crdt/crdt_data_extract_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_data_extract_test.dart diff --git a/test/crdt/crdt_data_sync_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_data_sync_test.dart similarity index 100% rename from test/crdt/crdt_data_sync_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_data_sync_test.dart diff --git a/test/crdt/crdt_get_canonical_time_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_get_canonical_time_test.dart similarity index 100% rename from test/crdt/crdt_get_canonical_time_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_get_canonical_time_test.dart diff --git a/test/crdt/crdt_get_changeset_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_get_changeset_test.dart similarity index 100% rename from test/crdt/crdt_get_changeset_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_get_changeset_test.dart diff --git a/test/crdt/crdt_last_modified_timestamp_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_last_modified_timestamp_test.dart similarity index 100% rename from test/crdt/crdt_last_modified_timestamp_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_last_modified_timestamp_test.dart diff --git a/test/crdt/crdt_merge_canonical_time_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_merge_canonical_time_test.dart similarity index 100% rename from test/crdt/crdt_merge_canonical_time_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_merge_canonical_time_test.dart diff --git a/test/crdt/crdt_merge_changeset_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_merge_changeset_test.dart similarity index 100% rename from test/crdt/crdt_merge_changeset_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_merge_changeset_test.dart diff --git a/test/crdt/crdt_save_changeset_test.dart b/legacy/drift_offline_sync/test/crdt/crdt_save_changeset_test.dart similarity index 100% rename from test/crdt/crdt_save_changeset_test.dart rename to legacy/drift_offline_sync/test/crdt/crdt_save_changeset_test.dart diff --git a/test/crdt/crdt_test_utils.dart b/legacy/drift_offline_sync/test/crdt/crdt_test_utils.dart similarity index 100% rename from test/crdt/crdt_test_utils.dart rename to legacy/drift_offline_sync/test/crdt/crdt_test_utils.dart diff --git a/test/database/database_migrations_test.dart b/legacy/drift_offline_sync/test/database/database_migrations_test.dart similarity index 100% rename from test/database/database_migrations_test.dart rename to legacy/drift_offline_sync/test/database/database_migrations_test.dart diff --git a/test/database/database_startup_test.dart b/legacy/drift_offline_sync/test/database/database_startup_test.dart similarity index 100% rename from test/database/database_startup_test.dart rename to legacy/drift_offline_sync/test/database/database_startup_test.dart diff --git a/test/hlc/hlc_comparison_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_comparison_test.dart similarity index 100% rename from test/hlc/hlc_comparison_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_comparison_test.dart diff --git a/test/hlc/hlc_converter_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_converter_test.dart similarity index 100% rename from test/hlc/hlc_converter_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_converter_test.dart diff --git a/test/hlc/hlc_copy_with_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_copy_with_test.dart similarity index 100% rename from test/hlc/hlc_copy_with_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_copy_with_test.dart diff --git a/test/hlc/hlc_increment_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_increment_test.dart similarity index 100% rename from test/hlc/hlc_increment_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_increment_test.dart diff --git a/test/hlc/hlc_merge_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_merge_test.dart similarity index 100% rename from test/hlc/hlc_merge_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_merge_test.dart diff --git a/test/hlc/hlc_serialization_test.dart b/legacy/drift_offline_sync/test/hlc/hlc_serialization_test.dart similarity index 100% rename from test/hlc/hlc_serialization_test.dart rename to legacy/drift_offline_sync/test/hlc/hlc_serialization_test.dart diff --git a/test/triggers/trigger_creation_test.dart b/legacy/drift_offline_sync/test/triggers/trigger_creation_test.dart similarity index 100% rename from test/triggers/trigger_creation_test.dart rename to legacy/drift_offline_sync/test/triggers/trigger_creation_test.dart diff --git a/test/triggers/trigger_execution_test.dart b/legacy/drift_offline_sync/test/triggers/trigger_execution_test.dart similarity index 100% rename from test/triggers/trigger_execution_test.dart rename to legacy/drift_offline_sync/test/triggers/trigger_execution_test.dart diff --git a/test/triggers/trigger_generation_test.dart b/legacy/drift_offline_sync/test/triggers/trigger_generation_test.dart similarity index 100% rename from test/triggers/trigger_generation_test.dart rename to legacy/drift_offline_sync/test/triggers/trigger_generation_test.dart diff --git a/test/triggers/trigger_hlc_increment_test.dart b/legacy/drift_offline_sync/test/triggers/trigger_hlc_increment_test.dart similarity index 100% rename from test/triggers/trigger_hlc_increment_test.dart rename to legacy/drift_offline_sync/test/triggers/trigger_hlc_increment_test.dart diff --git a/test/two_databases_test.dart b/legacy/drift_offline_sync/test/two_databases_test.dart similarity index 100% rename from test/two_databases_test.dart rename to legacy/drift_offline_sync/test/two_databases_test.dart diff --git a/test/utils/crdt_context.dart b/legacy/drift_offline_sync/test/utils/crdt_context.dart similarity index 100% rename from test/utils/crdt_context.dart rename to legacy/drift_offline_sync/test/utils/crdt_context.dart diff --git a/test/utils/database.dart b/legacy/drift_offline_sync/test/utils/database.dart similarity index 100% rename from test/utils/database.dart rename to legacy/drift_offline_sync/test/utils/database.dart diff --git a/legacy/drift_offline_sync/test/utils/database.g.dart b/legacy/drift_offline_sync/test/utils/database.g.dart new file mode 100644 index 0000000..48370ac --- /dev/null +++ b/legacy/drift_offline_sync/test/utils/database.g.dart @@ -0,0 +1,6885 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $CategoriesTable extends Categories + with TableInfo<$CategoriesTable, Category> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CategoriesTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($CategoriesTable.$converterid); + static const VerificationMeta _descriptionMeta = const VerificationMeta( + 'description', + ); + @override + late final GeneratedColumn description = GeneratedColumn( + 'desc', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + $customConstraints: 'NOT NULL UNIQUE', + ); + @override + late final GeneratedColumnWithTypeConverter priority = + GeneratedColumn( + 'priority', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultValue: const Constant(0), + ).withConverter($CategoriesTable.$converterpriority); + static const VerificationMeta _descriptionInUpperCaseMeta = + const VerificationMeta('descriptionInUpperCase'); + @override + late final GeneratedColumn descriptionInUpperCase = + GeneratedColumn( + 'description_in_upper_case', + aliasedName, + false, + generatedAs: GeneratedAs( + StringExpressionOperators(description).upper(), + false, + ), + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + id, + description, + priority, + descriptionInUpperCase, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'categories'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('desc')) { + context.handle( + _descriptionMeta, + description.isAcceptableOrUnknown(data['desc']!, _descriptionMeta), + ); + } else if (isInserting) { + context.missing(_descriptionMeta); + } + if (data.containsKey('description_in_upper_case')) { + context.handle( + _descriptionInUpperCaseMeta, + descriptionInUpperCase.isAcceptableOrUnknown( + data['description_in_upper_case']!, + _descriptionInUpperCaseMeta, + ), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + Category map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return Category( + id: $CategoriesTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + description: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}desc'], + )!, + priority: $CategoriesTable.$converterpriority.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}priority'], + )!, + ), + descriptionInUpperCase: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}description_in_upper_case'], + )!, + ); + } + + @override + $CategoriesTable createAlias(String alias) { + return $CategoriesTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $converterpriority = + const EnumIndexConverter(CategoryPriority.values); +} + +class Category extends DataClass implements Insertable { + final RowId id; + final String description; + final CategoryPriority priority; + final String descriptionInUpperCase; + const Category({ + required this.id, + required this.description, + required this.priority, + required this.descriptionInUpperCase, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($CategoriesTable.$converterid.toSql(id)); + } + map['desc'] = Variable(description); + { + map['priority'] = Variable( + $CategoriesTable.$converterpriority.toSql(priority), + ); + } + return map; + } + + CategoriesCompanion toCompanion(bool nullToAbsent) { + return CategoriesCompanion( + id: Value(id), + description: Value(description), + priority: Value(priority), + ); + } + + factory Category.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return Category( + id: $CategoriesTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + description: serializer.fromJson(json['desc']), + priority: $CategoriesTable.$converterpriority.fromJson( + serializer.fromJson(json['priority']), + ), + descriptionInUpperCase: serializer.fromJson( + json['description_in_upper_case'], + ), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($CategoriesTable.$converterid.toJson(id)), + 'desc': serializer.toJson(description), + 'priority': serializer.toJson( + $CategoriesTable.$converterpriority.toJson(priority), + ), + 'description_in_upper_case': serializer.toJson( + descriptionInUpperCase, + ), + }; + } + + Category copyWith({ + RowId? id, + String? description, + CategoryPriority? priority, + String? descriptionInUpperCase, + }) => Category( + id: id ?? this.id, + description: description ?? this.description, + priority: priority ?? this.priority, + descriptionInUpperCase: + descriptionInUpperCase ?? this.descriptionInUpperCase, + ); + @override + String toString() { + return (StringBuffer('Category(') + ..write('id: $id, ') + ..write('description: $description, ') + ..write('priority: $priority, ') + ..write('descriptionInUpperCase: $descriptionInUpperCase') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, description, priority, descriptionInUpperCase); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is Category && + other.id == this.id && + other.description == this.description && + other.priority == this.priority && + other.descriptionInUpperCase == this.descriptionInUpperCase); +} + +class CategoriesCompanion extends UpdateCompanion { + final Value id; + final Value description; + final Value priority; + const CategoriesCompanion({ + this.id = const Value.absent(), + this.description = const Value.absent(), + this.priority = const Value.absent(), + }); + CategoriesCompanion.insert({ + this.id = const Value.absent(), + required String description, + this.priority = const Value.absent(), + }) : description = Value(description); + static Insertable custom({ + Expression? id, + Expression? description, + Expression? priority, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (description != null) 'desc': description, + if (priority != null) 'priority': priority, + }); + } + + CategoriesCompanion copyWith({ + Value? id, + Value? description, + Value? priority, + }) { + return CategoriesCompanion( + id: id ?? this.id, + description: description ?? this.description, + priority: priority ?? this.priority, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($CategoriesTable.$converterid.toSql(id.value)); + } + if (description.present) { + map['desc'] = Variable(description.value); + } + if (priority.present) { + map['priority'] = Variable( + $CategoriesTable.$converterpriority.toSql(priority.value), + ); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CategoriesCompanion(') + ..write('id: $id, ') + ..write('description: $description, ') + ..write('priority: $priority') + ..write(')')) + .toString(); + } +} + +class $TodosTableTable extends TodosTable + with TableInfo<$TodosTableTable, TodoEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TodosTableTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($TodosTableTable.$converterid); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', + aliasedName, + true, + additionalChecks: GeneratedColumn.checkTextLength( + minTextLength: 4, + maxTextLength: 16, + ), + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _contentMeta = const VerificationMeta( + 'content', + ); + @override + late final GeneratedColumn content = GeneratedColumn( + 'content', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _targetDateMeta = const VerificationMeta( + 'targetDate', + ); + @override + late final GeneratedColumn targetDate = GeneratedColumn( + 'target_date', + aliasedName, + true, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways('UNIQUE'), + ); + @override + late final GeneratedColumnWithTypeConverter category = + GeneratedColumn( + 'category', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES categories (id) DEFERRABLE INITIALLY DEFERRED', + ), + ).withConverter($TodosTableTable.$convertercategoryn); + @override + late final GeneratedColumnWithTypeConverter status = + GeneratedColumn( + 'status', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter($TodosTableTable.$converterstatusn); + @override + List get $columns => [ + id, + title, + content, + targetDate, + category, + status, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'todos'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('title')) { + context.handle( + _titleMeta, + title.isAcceptableOrUnknown(data['title']!, _titleMeta), + ); + } + if (data.containsKey('content')) { + context.handle( + _contentMeta, + content.isAcceptableOrUnknown(data['content']!, _contentMeta), + ); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('target_date')) { + context.handle( + _targetDateMeta, + targetDate.isAcceptableOrUnknown(data['target_date']!, _targetDateMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + List> get uniqueKeys => [ + {title, category}, + {title, targetDate}, + ]; + @override + TodoEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoEntry( + id: $TodosTableTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + title: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}title'], + ), + content: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}content'], + )!, + targetDate: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}target_date'], + ), + category: $TodosTableTable.$convertercategoryn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}category'], + ), + ), + status: $TodosTableTable.$converterstatusn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}status'], + ), + ), + ); + } + + @override + $TodosTableTable createAlias(String alias) { + return $TodosTableTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $convertercategory = + TypeConverter.extensionType(); + static JsonTypeConverter2 $convertercategoryn = + JsonTypeConverter2.asNullable($convertercategory); + static JsonTypeConverter2 $converterstatus = + const EnumNameConverter(TodoStatus.values); + static JsonTypeConverter2 $converterstatusn = + JsonTypeConverter2.asNullable($converterstatus); +} + +class TodoEntry extends DataClass implements Insertable { + final RowId id; + final String? title; + final String content; + final DateTime? targetDate; + final RowId? category; + final TodoStatus? status; + const TodoEntry({ + required this.id, + this.title, + required this.content, + this.targetDate, + this.category, + this.status, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($TodosTableTable.$converterid.toSql(id)); + } + if (!nullToAbsent || title != null) { + map['title'] = Variable(title); + } + map['content'] = Variable(content); + if (!nullToAbsent || targetDate != null) { + map['target_date'] = Variable(targetDate); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable( + $TodosTableTable.$convertercategoryn.toSql(category), + ); + } + if (!nullToAbsent || status != null) { + map['status'] = Variable( + $TodosTableTable.$converterstatusn.toSql(status), + ); + } + return map; + } + + TodosTableCompanion toCompanion(bool nullToAbsent) { + return TodosTableCompanion( + id: Value(id), + title: title == null && nullToAbsent + ? const Value.absent() + : Value(title), + content: Value(content), + targetDate: targetDate == null && nullToAbsent + ? const Value.absent() + : Value(targetDate), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + status: status == null && nullToAbsent + ? const Value.absent() + : Value(status), + ); + } + + factory TodoEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoEntry( + id: $TodosTableTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + targetDate: serializer.fromJson(json['target_date']), + category: $TodosTableTable.$convertercategoryn.fromJson( + serializer.fromJson(json['category']), + ), + status: $TodosTableTable.$converterstatusn.fromJson( + serializer.fromJson(json['status']), + ), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($TodosTableTable.$converterid.toJson(id)), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'target_date': serializer.toJson(targetDate), + 'category': serializer.toJson( + $TodosTableTable.$convertercategoryn.toJson(category), + ), + 'status': serializer.toJson( + $TodosTableTable.$converterstatusn.toJson(status), + ), + }; + } + + TodoEntry copyWith({ + RowId? id, + Value title = const Value.absent(), + String? content, + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodoEntry( + id: id ?? this.id, + title: title.present ? title.value : this.title, + content: content ?? this.content, + targetDate: targetDate.present ? targetDate.value : this.targetDate, + category: category.present ? category.value : this.category, + status: status.present ? status.value : this.status, + ); + TodoEntry copyWithCompanion(TodosTableCompanion data) { + return TodoEntry( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + targetDate: data.targetDate.present + ? data.targetDate.value + : this.targetDate, + category: data.category.present ? data.category.value : this.category, + status: data.status.present ? data.status.value : this.status, + ); + } + + @override + String toString() { + return (StringBuffer('TodoEntry(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('targetDate: $targetDate, ') + ..write('category: $category, ') + ..write('status: $status') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, content, targetDate, category, status); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoEntry && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.targetDate == this.targetDate && + other.category == this.category && + other.status == this.status); +} + +class TodosTableCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value targetDate; + final Value category; + final Value status; + const TodosTableCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.targetDate = const Value.absent(), + this.category = const Value.absent(), + this.status = const Value.absent(), + }); + TodosTableCompanion.insert({ + this.id = const Value.absent(), + this.title = const Value.absent(), + required String content, + this.targetDate = const Value.absent(), + this.category = const Value.absent(), + this.status = const Value.absent(), + }) : content = Value(content); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? targetDate, + Expression? category, + Expression? status, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'content': content, + if (targetDate != null) 'target_date': targetDate, + if (category != null) 'category': category, + if (status != null) 'status': status, + }); + } + + TodosTableCompanion copyWith({ + Value? id, + Value? title, + Value? content, + Value? targetDate, + Value? category, + Value? status, + }) { + return TodosTableCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + targetDate: targetDate ?? this.targetDate, + category: category ?? this.category, + status: status ?? this.status, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($TodosTableTable.$converterid.toSql(id.value)); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['content'] = Variable(content.value); + } + if (targetDate.present) { + map['target_date'] = Variable(targetDate.value); + } + if (category.present) { + map['category'] = Variable( + $TodosTableTable.$convertercategoryn.toSql(category.value), + ); + } + if (status.present) { + map['status'] = Variable( + $TodosTableTable.$converterstatusn.toSql(status.value), + ); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TodosTableCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('targetDate: $targetDate, ') + ..write('category: $category, ') + ..write('status: $status') + ..write(')')) + .toString(); + } +} + +class $UsersTable extends Users with TableInfo<$UsersTable, User> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $UsersTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($UsersTable.$converterid); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + false, + additionalChecks: GeneratedColumn.checkTextLength( + minTextLength: 6, + maxTextLength: 32, + ), + type: DriftSqlType.string, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways('UNIQUE'), + ); + static const VerificationMeta _isAwesomeMeta = const VerificationMeta( + 'isAwesome', + ); + @override + late final GeneratedColumn isAwesome = GeneratedColumn( + 'is_awesome', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({ + SqlDialect.sqlite: 'CHECK ("is_awesome" IN (0, 1))', + SqlDialect.postgres: '', + }), + defaultValue: const Constant(true), + ); + static const VerificationMeta _profilePictureMeta = const VerificationMeta( + 'profilePicture', + ); + @override + late final GeneratedColumn profilePicture = + GeneratedColumn( + 'profile_picture', + aliasedName, + false, + type: DriftSqlType.blob, + requiredDuringInsert: true, + ); + static const VerificationMeta _creationTimeMeta = const VerificationMeta( + 'creationTime', + ); + @override + late final GeneratedColumn creationTime = GeneratedColumn( + 'creation_time', + aliasedName, + false, + check: () => + ComparableExpr(creationTime).isBiggerThan(Constant(DateTime.utc(1950))), + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: currentDateAndTime, + ); + @override + List get $columns => [ + id, + name, + isAwesome, + profilePicture, + creationTime, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'users'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } else if (isInserting) { + context.missing(_nameMeta); + } + if (data.containsKey('is_awesome')) { + context.handle( + _isAwesomeMeta, + isAwesome.isAcceptableOrUnknown(data['is_awesome']!, _isAwesomeMeta), + ); + } + if (data.containsKey('profile_picture')) { + context.handle( + _profilePictureMeta, + profilePicture.isAcceptableOrUnknown( + data['profile_picture']!, + _profilePictureMeta, + ), + ); + } else if (isInserting) { + context.missing(_profilePictureMeta); + } + if (data.containsKey('creation_time')) { + context.handle( + _creationTimeMeta, + creationTime.isAcceptableOrUnknown( + data['creation_time']!, + _creationTimeMeta, + ), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + User map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return User( + id: $UsersTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + )!, + isAwesome: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_awesome'], + )!, + profilePicture: attachedDatabase.typeMapping.read( + DriftSqlType.blob, + data['${effectivePrefix}profile_picture'], + )!, + creationTime: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}creation_time'], + )!, + ); + } + + @override + $UsersTable createAlias(String alias) { + return $UsersTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); +} + +class User extends DataClass implements Insertable { + final RowId id; + final String name; + final bool isAwesome; + final Uint8List profilePicture; + final DateTime creationTime; + const User({ + required this.id, + required this.name, + required this.isAwesome, + required this.profilePicture, + required this.creationTime, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($UsersTable.$converterid.toSql(id)); + } + map['name'] = Variable(name); + map['is_awesome'] = Variable(isAwesome); + map['profile_picture'] = Variable(profilePicture); + map['creation_time'] = Variable(creationTime); + return map; + } + + UsersCompanion toCompanion(bool nullToAbsent) { + return UsersCompanion( + id: Value(id), + name: Value(name), + isAwesome: Value(isAwesome), + profilePicture: Value(profilePicture), + creationTime: Value(creationTime), + ); + } + + factory User.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return User( + id: $UsersTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + name: serializer.fromJson(json['name']), + isAwesome: serializer.fromJson(json['is_awesome']), + profilePicture: serializer.fromJson(json['profile_picture']), + creationTime: serializer.fromJson(json['creation_time']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($UsersTable.$converterid.toJson(id)), + 'name': serializer.toJson(name), + 'is_awesome': serializer.toJson(isAwesome), + 'profile_picture': serializer.toJson(profilePicture), + 'creation_time': serializer.toJson(creationTime), + }; + } + + User copyWith({ + RowId? id, + String? name, + bool? isAwesome, + Uint8List? profilePicture, + DateTime? creationTime, + }) => User( + id: id ?? this.id, + name: name ?? this.name, + isAwesome: isAwesome ?? this.isAwesome, + profilePicture: profilePicture ?? this.profilePicture, + creationTime: creationTime ?? this.creationTime, + ); + User copyWithCompanion(UsersCompanion data) { + return User( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + isAwesome: data.isAwesome.present ? data.isAwesome.value : this.isAwesome, + profilePicture: data.profilePicture.present + ? data.profilePicture.value + : this.profilePicture, + creationTime: data.creationTime.present + ? data.creationTime.value + : this.creationTime, + ); + } + + @override + String toString() { + return (StringBuffer('User(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('isAwesome: $isAwesome, ') + ..write('profilePicture: $profilePicture, ') + ..write('creationTime: $creationTime') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + isAwesome, + $driftBlobEquality.hash(profilePicture), + creationTime, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is User && + other.id == this.id && + other.name == this.name && + other.isAwesome == this.isAwesome && + $driftBlobEquality.equals( + other.profilePicture, + this.profilePicture, + ) && + other.creationTime == this.creationTime); +} + +class UsersCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value isAwesome; + final Value profilePicture; + final Value creationTime; + const UsersCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.isAwesome = const Value.absent(), + this.profilePicture = const Value.absent(), + this.creationTime = const Value.absent(), + }); + UsersCompanion.insert({ + this.id = const Value.absent(), + required String name, + this.isAwesome = const Value.absent(), + required Uint8List profilePicture, + this.creationTime = const Value.absent(), + }) : name = Value(name), + profilePicture = Value(profilePicture); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? isAwesome, + Expression? profilePicture, + Expression? creationTime, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (isAwesome != null) 'is_awesome': isAwesome, + if (profilePicture != null) 'profile_picture': profilePicture, + if (creationTime != null) 'creation_time': creationTime, + }); + } + + UsersCompanion copyWith({ + Value? id, + Value? name, + Value? isAwesome, + Value? profilePicture, + Value? creationTime, + }) { + return UsersCompanion( + id: id ?? this.id, + name: name ?? this.name, + isAwesome: isAwesome ?? this.isAwesome, + profilePicture: profilePicture ?? this.profilePicture, + creationTime: creationTime ?? this.creationTime, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($UsersTable.$converterid.toSql(id.value)); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (isAwesome.present) { + map['is_awesome'] = Variable(isAwesome.value); + } + if (profilePicture.present) { + map['profile_picture'] = Variable(profilePicture.value); + } + if (creationTime.present) { + map['creation_time'] = Variable(creationTime.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('UsersCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('isAwesome: $isAwesome, ') + ..write('profilePicture: $profilePicture, ') + ..write('creationTime: $creationTime') + ..write(')')) + .toString(); + } +} + +class $SharedTodosTable extends SharedTodos + with TableInfo<$SharedTodosTable, SharedTodo> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $SharedTodosTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _todoMeta = const VerificationMeta('todo'); + @override + late final GeneratedColumn todo = GeneratedColumn( + 'todo', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _userMeta = const VerificationMeta('user'); + @override + late final GeneratedColumn user = GeneratedColumn( + 'user', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + @override + List get $columns => [todo, user]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'shared_todos'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('todo')) { + context.handle( + _todoMeta, + todo.isAcceptableOrUnknown(data['todo']!, _todoMeta), + ); + } else if (isInserting) { + context.missing(_todoMeta); + } + if (data.containsKey('user')) { + context.handle( + _userMeta, + user.isAcceptableOrUnknown(data['user']!, _userMeta), + ); + } else if (isInserting) { + context.missing(_userMeta); + } + return context; + } + + @override + Set get $primaryKey => {todo, user}; + @override + SharedTodo map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return SharedTodo( + todo: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}todo'], + )!, + user: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}user'], + )!, + ); + } + + @override + $SharedTodosTable createAlias(String alias) { + return $SharedTodosTable(attachedDatabase, alias); + } +} + +class SharedTodo extends DataClass implements Insertable { + final int todo; + final int user; + const SharedTodo({required this.todo, required this.user}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['todo'] = Variable(todo); + map['user'] = Variable(user); + return map; + } + + SharedTodosCompanion toCompanion(bool nullToAbsent) { + return SharedTodosCompanion(todo: Value(todo), user: Value(user)); + } + + factory SharedTodo.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return SharedTodo( + todo: serializer.fromJson(json['todo']), + user: serializer.fromJson(json['user']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'todo': serializer.toJson(todo), + 'user': serializer.toJson(user), + }; + } + + SharedTodo copyWith({int? todo, int? user}) => + SharedTodo(todo: todo ?? this.todo, user: user ?? this.user); + SharedTodo copyWithCompanion(SharedTodosCompanion data) { + return SharedTodo( + todo: data.todo.present ? data.todo.value : this.todo, + user: data.user.present ? data.user.value : this.user, + ); + } + + @override + String toString() { + return (StringBuffer('SharedTodo(') + ..write('todo: $todo, ') + ..write('user: $user') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(todo, user); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is SharedTodo && + other.todo == this.todo && + other.user == this.user); +} + +class SharedTodosCompanion extends UpdateCompanion { + final Value todo; + final Value user; + final Value rowid; + const SharedTodosCompanion({ + this.todo = const Value.absent(), + this.user = const Value.absent(), + this.rowid = const Value.absent(), + }); + SharedTodosCompanion.insert({ + required int todo, + required int user, + this.rowid = const Value.absent(), + }) : todo = Value(todo), + user = Value(user); + static Insertable custom({ + Expression? todo, + Expression? user, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (todo != null) 'todo': todo, + if (user != null) 'user': user, + if (rowid != null) 'rowid': rowid, + }); + } + + SharedTodosCompanion copyWith({ + Value? todo, + Value? user, + Value? rowid, + }) { + return SharedTodosCompanion( + todo: todo ?? this.todo, + user: user ?? this.user, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (todo.present) { + map['todo'] = Variable(todo.value); + } + if (user.present) { + map['user'] = Variable(user.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('SharedTodosCompanion(') + ..write('todo: $todo, ') + ..write('user: $user, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $TableWithoutPKTable extends TableWithoutPK + with TableInfo<$TableWithoutPKTable, CustomRowClass> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TableWithoutPKTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _notReallyAnIdMeta = const VerificationMeta( + 'notReallyAnId', + ); + @override + late final GeneratedColumn notReallyAnId = GeneratedColumn( + 'not_really_an_id', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _someFloatMeta = const VerificationMeta( + 'someFloat', + ); + @override + late final GeneratedColumn someFloat = GeneratedColumn( + 'some_float', + aliasedName, + false, + type: DriftSqlType.double, + requiredDuringInsert: true, + ); + static const VerificationMeta _webSafeIntMeta = const VerificationMeta( + 'webSafeInt', + ); + @override + late final GeneratedColumn webSafeInt = GeneratedColumn( + 'web_safe_int', + aliasedName, + true, + type: DriftSqlType.bigInt, + requiredDuringInsert: false, + ); + @override + late final GeneratedColumnWithTypeConverter custom = + GeneratedColumn( + 'custom', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: false, + clientDefault: const Uuid().v4, + ).withConverter($TableWithoutPKTable.$convertercustom); + @override + List get $columns => [ + notReallyAnId, + someFloat, + webSafeInt, + custom, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'table_without_p_k'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('not_really_an_id')) { + context.handle( + _notReallyAnIdMeta, + notReallyAnId.isAcceptableOrUnknown( + data['not_really_an_id']!, + _notReallyAnIdMeta, + ), + ); + } else if (isInserting) { + context.missing(_notReallyAnIdMeta); + } + if (data.containsKey('some_float')) { + context.handle( + _someFloatMeta, + someFloat.isAcceptableOrUnknown(data['some_float']!, _someFloatMeta), + ); + } else if (isInserting) { + context.missing(_someFloatMeta); + } + if (data.containsKey('web_safe_int')) { + context.handle( + _webSafeIntMeta, + webSafeInt.isAcceptableOrUnknown( + data['web_safe_int']!, + _webSafeIntMeta, + ), + ); + } + return context; + } + + @override + Set get $primaryKey => const {}; + @override + CustomRowClass map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CustomRowClass.map( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}not_really_an_id'], + )!, + attachedDatabase.typeMapping.read( + DriftSqlType.double, + data['${effectivePrefix}some_float'], + )!, + custom: $TableWithoutPKTable.$convertercustom.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}custom'], + )!, + ), + webSafeInt: attachedDatabase.typeMapping.read( + DriftSqlType.bigInt, + data['${effectivePrefix}web_safe_int'], + ), + ); + } + + @override + $TableWithoutPKTable createAlias(String alias) { + return $TableWithoutPKTable(attachedDatabase, alias); + } + + static TypeConverter $convertercustom = + const CustomConverter(); +} + +class TableWithoutPKCompanion extends UpdateCompanion { + final Value notReallyAnId; + final Value someFloat; + final Value webSafeInt; + final Value custom; + final Value rowid; + const TableWithoutPKCompanion({ + this.notReallyAnId = const Value.absent(), + this.someFloat = const Value.absent(), + this.webSafeInt = const Value.absent(), + this.custom = const Value.absent(), + this.rowid = const Value.absent(), + }); + TableWithoutPKCompanion.insert({ + required int notReallyAnId, + required double someFloat, + this.webSafeInt = const Value.absent(), + this.custom = const Value.absent(), + this.rowid = const Value.absent(), + }) : notReallyAnId = Value(notReallyAnId), + someFloat = Value(someFloat); + static Insertable createCustom({ + Expression? notReallyAnId, + Expression? someFloat, + Expression? webSafeInt, + Expression? custom, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (notReallyAnId != null) 'not_really_an_id': notReallyAnId, + if (someFloat != null) 'some_float': someFloat, + if (webSafeInt != null) 'web_safe_int': webSafeInt, + if (custom != null) 'custom': custom, + if (rowid != null) 'rowid': rowid, + }); + } + + TableWithoutPKCompanion copyWith({ + Value? notReallyAnId, + Value? someFloat, + Value? webSafeInt, + Value? custom, + Value? rowid, + }) { + return TableWithoutPKCompanion( + notReallyAnId: notReallyAnId ?? this.notReallyAnId, + someFloat: someFloat ?? this.someFloat, + webSafeInt: webSafeInt ?? this.webSafeInt, + custom: custom ?? this.custom, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (notReallyAnId.present) { + map['not_really_an_id'] = Variable(notReallyAnId.value); + } + if (someFloat.present) { + map['some_float'] = Variable(someFloat.value); + } + if (webSafeInt.present) { + map['web_safe_int'] = Variable(webSafeInt.value); + } + if (custom.present) { + map['custom'] = Variable( + $TableWithoutPKTable.$convertercustom.toSql(custom.value), + ); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TableWithoutPKCompanion(') + ..write('notReallyAnId: $notReallyAnId, ') + ..write('someFloat: $someFloat, ') + ..write('webSafeInt: $webSafeInt, ') + ..write('custom: $custom, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class _$CustomRowClassInsertable implements Insertable { + CustomRowClass _object; + _$CustomRowClassInsertable(this._object); + @override + Map toColumns(bool nullToAbsent) { + return TableWithoutPKCompanion( + notReallyAnId: Value(_object.notReallyAnId), + someFloat: Value(_object.someFloat), + webSafeInt: Value(_object.webSafeInt), + custom: Value(_object.custom), + ).toColumns(false); + } +} + +extension CustomRowClassToInsertable on CustomRowClass { + _$CustomRowClassInsertable toInsertable() { + return _$CustomRowClassInsertable(this); + } +} + +class $PureDefaultsTable extends PureDefaults + with TableInfo<$PureDefaultsTable, PureDefault> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $PureDefaultsTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter txt = + GeneratedColumn( + 'insert', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter($PureDefaultsTable.$convertertxtn); + @override + List get $columns => [txt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'pure_defaults'; + @override + Set get $primaryKey => {txt}; + @override + PureDefault map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return PureDefault( + txt: $PureDefaultsTable.$convertertxtn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}insert'], + ), + ), + ); + } + + @override + $PureDefaultsTable createAlias(String alias) { + return $PureDefaultsTable(attachedDatabase, alias); + } + + static JsonTypeConverter2> + $convertertxt = const CustomJsonConverter(); + static JsonTypeConverter2?> + $convertertxtn = JsonTypeConverter2.asNullable($convertertxt); +} + +class PureDefault extends DataClass implements Insertable { + final MyCustomObject? txt; + const PureDefault({this.txt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (!nullToAbsent || txt != null) { + map['insert'] = Variable( + $PureDefaultsTable.$convertertxtn.toSql(txt), + ); + } + return map; + } + + PureDefaultsCompanion toCompanion(bool nullToAbsent) { + return PureDefaultsCompanion( + txt: txt == null && nullToAbsent ? const Value.absent() : Value(txt), + ); + } + + factory PureDefault.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return PureDefault( + txt: $PureDefaultsTable.$convertertxtn.fromJson( + serializer.fromJson?>(json['insert']), + ), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'insert': serializer.toJson?>( + $PureDefaultsTable.$convertertxtn.toJson(txt), + ), + }; + } + + PureDefault copyWith({Value txt = const Value.absent()}) => + PureDefault(txt: txt.present ? txt.value : this.txt); + PureDefault copyWithCompanion(PureDefaultsCompanion data) { + return PureDefault(txt: data.txt.present ? data.txt.value : this.txt); + } + + @override + String toString() { + return (StringBuffer('PureDefault(') + ..write('txt: $txt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => txt.hashCode; + @override + bool operator ==(Object other) => + identical(this, other) || (other is PureDefault && other.txt == this.txt); +} + +class PureDefaultsCompanion extends UpdateCompanion { + final Value txt; + final Value rowid; + const PureDefaultsCompanion({ + this.txt = const Value.absent(), + this.rowid = const Value.absent(), + }); + PureDefaultsCompanion.insert({ + this.txt = const Value.absent(), + this.rowid = const Value.absent(), + }); + static Insertable custom({ + Expression? txt, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (txt != null) 'insert': txt, + if (rowid != null) 'rowid': rowid, + }); + } + + PureDefaultsCompanion copyWith({ + Value? txt, + Value? rowid, + }) { + return PureDefaultsCompanion( + txt: txt ?? this.txt, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (txt.present) { + map['insert'] = Variable( + $PureDefaultsTable.$convertertxtn.toSql(txt.value), + ); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('PureDefaultsCompanion(') + ..write('txt: $txt, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $WithCustomTypeTable extends WithCustomType + with TableInfo<$WithCustomTypeTable, WithCustomTypeData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $WithCustomTypeTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + type: uuidType, + requiredDuringInsert: true, + ); + @override + List get $columns => [id]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'with_custom_type'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + return context; + } + + @override + Set get $primaryKey => const {}; + @override + WithCustomTypeData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return WithCustomTypeData( + id: attachedDatabase.typeMapping.read( + uuidType, + data['${effectivePrefix}id'], + )!, + ); + } + + @override + $WithCustomTypeTable createAlias(String alias) { + return $WithCustomTypeTable(attachedDatabase, alias); + } +} + +class WithCustomTypeData extends DataClass + implements Insertable { + final UuidValue id; + const WithCustomTypeData({required this.id}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id, uuidType); + return map; + } + + WithCustomTypeCompanion toCompanion(bool nullToAbsent) { + return WithCustomTypeCompanion(id: Value(id)); + } + + factory WithCustomTypeData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return WithCustomTypeData(id: serializer.fromJson(json['id'])); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return {'id': serializer.toJson(id)}; + } + + WithCustomTypeData copyWith({UuidValue? id}) => + WithCustomTypeData(id: id ?? this.id); + WithCustomTypeData copyWithCompanion(WithCustomTypeCompanion data) { + return WithCustomTypeData(id: data.id.present ? data.id.value : this.id); + } + + @override + String toString() { + return (StringBuffer('WithCustomTypeData(') + ..write('id: $id') + ..write(')')) + .toString(); + } + + @override + int get hashCode => id.hashCode; + @override + bool operator ==(Object other) => + identical(this, other) || + (other is WithCustomTypeData && other.id == this.id); +} + +class WithCustomTypeCompanion extends UpdateCompanion { + final Value id; + final Value rowid; + const WithCustomTypeCompanion({ + this.id = const Value.absent(), + this.rowid = const Value.absent(), + }); + WithCustomTypeCompanion.insert({ + required UuidValue id, + this.rowid = const Value.absent(), + }) : id = Value(id); + static Insertable custom({ + Expression? id, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (rowid != null) 'rowid': rowid, + }); + } + + WithCustomTypeCompanion copyWith({Value? id, Value? rowid}) { + return WithCustomTypeCompanion( + id: id ?? this.id, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value, uuidType); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('WithCustomTypeCompanion(') + ..write('id: $id, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $TableWithEveryColumnTypeTable extends TableWithEveryColumnType + with + TableInfo< + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + > { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TableWithEveryColumnTypeTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($TableWithEveryColumnTypeTable.$converterid); + static const VerificationMeta _aBoolMeta = const VerificationMeta('aBool'); + @override + late final GeneratedColumn aBool = GeneratedColumn( + 'a_bool', + aliasedName, + true, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({ + SqlDialect.sqlite: 'CHECK ("a_bool" IN (0, 1))', + SqlDialect.postgres: '', + }), + ); + static const VerificationMeta _aDateTimeMeta = const VerificationMeta( + 'aDateTime', + ); + @override + late final GeneratedColumn aDateTime = GeneratedColumn( + 'a_date_time', + aliasedName, + true, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + ); + static const VerificationMeta _aTextMeta = const VerificationMeta('aText'); + @override + late final GeneratedColumn aText = GeneratedColumn( + 'a_text', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _anIntMeta = const VerificationMeta('anInt'); + @override + late final GeneratedColumn anInt = GeneratedColumn( + 'an_int', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + ); + static const VerificationMeta _anInt64Meta = const VerificationMeta( + 'anInt64', + ); + @override + late final GeneratedColumn anInt64 = GeneratedColumn( + 'an_int64', + aliasedName, + true, + type: DriftSqlType.bigInt, + requiredDuringInsert: false, + ); + static const VerificationMeta _aRealMeta = const VerificationMeta('aReal'); + @override + late final GeneratedColumn aReal = GeneratedColumn( + 'a_real', + aliasedName, + true, + type: DriftSqlType.double, + requiredDuringInsert: false, + ); + static const VerificationMeta _aBlobMeta = const VerificationMeta('aBlob'); + @override + late final GeneratedColumn aBlob = GeneratedColumn( + 'a_blob', + aliasedName, + true, + type: DriftSqlType.blob, + requiredDuringInsert: false, + ); + @override + late final GeneratedColumnWithTypeConverter anIntEnum = + GeneratedColumn( + 'an_int_enum', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + ).withConverter( + $TableWithEveryColumnTypeTable.$converteranIntEnumn, + ); + @override + late final GeneratedColumnWithTypeConverter + aTextWithConverter = + GeneratedColumn( + 'insert', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern, + ); + static const VerificationMeta _aUuidMeta = const VerificationMeta('aUuid'); + @override + late final GeneratedColumn aUuid = GeneratedColumn( + 'a_uuid', + aliasedName, + true, + type: uuidType, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + id, + aBool, + aDateTime, + aText, + anInt, + anInt64, + aReal, + aBlob, + anIntEnum, + aTextWithConverter, + aUuid, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'table_with_every_column_type'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('a_bool')) { + context.handle( + _aBoolMeta, + aBool.isAcceptableOrUnknown(data['a_bool']!, _aBoolMeta), + ); + } + if (data.containsKey('a_date_time')) { + context.handle( + _aDateTimeMeta, + aDateTime.isAcceptableOrUnknown(data['a_date_time']!, _aDateTimeMeta), + ); + } + if (data.containsKey('a_text')) { + context.handle( + _aTextMeta, + aText.isAcceptableOrUnknown(data['a_text']!, _aTextMeta), + ); + } + if (data.containsKey('an_int')) { + context.handle( + _anIntMeta, + anInt.isAcceptableOrUnknown(data['an_int']!, _anIntMeta), + ); + } + if (data.containsKey('an_int64')) { + context.handle( + _anInt64Meta, + anInt64.isAcceptableOrUnknown(data['an_int64']!, _anInt64Meta), + ); + } + if (data.containsKey('a_real')) { + context.handle( + _aRealMeta, + aReal.isAcceptableOrUnknown(data['a_real']!, _aRealMeta), + ); + } + if (data.containsKey('a_blob')) { + context.handle( + _aBlobMeta, + aBlob.isAcceptableOrUnknown(data['a_blob']!, _aBlobMeta), + ); + } + if (data.containsKey('a_uuid')) { + context.handle( + _aUuidMeta, + aUuid.isAcceptableOrUnknown(data['a_uuid']!, _aUuidMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + TableWithEveryColumnTypeData map( + Map data, { + String? tablePrefix, + }) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TableWithEveryColumnTypeData( + id: $TableWithEveryColumnTypeTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + aBool: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}a_bool'], + ), + aDateTime: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}a_date_time'], + ), + aText: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}a_text'], + ), + anInt: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}an_int'], + ), + anInt64: attachedDatabase.typeMapping.read( + DriftSqlType.bigInt, + data['${effectivePrefix}an_int64'], + ), + aReal: attachedDatabase.typeMapping.read( + DriftSqlType.double, + data['${effectivePrefix}a_real'], + ), + aBlob: attachedDatabase.typeMapping.read( + DriftSqlType.blob, + data['${effectivePrefix}a_blob'], + ), + anIntEnum: $TableWithEveryColumnTypeTable.$converteranIntEnumn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}an_int_enum'], + ), + ), + aTextWithConverter: $TableWithEveryColumnTypeTable + .$converteraTextWithConvertern + .fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}insert'], + ), + ), + aUuid: attachedDatabase.typeMapping.read( + uuidType, + data['${effectivePrefix}a_uuid'], + ), + ); + } + + @override + $TableWithEveryColumnTypeTable createAlias(String alias) { + return $TableWithEveryColumnTypeTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $converteranIntEnum = + const EnumIndexConverter(TodoStatus.values); + static JsonTypeConverter2 $converteranIntEnumn = + JsonTypeConverter2.asNullable($converteranIntEnum); + static JsonTypeConverter2> + $converteraTextWithConverter = const CustomJsonConverter(); + static JsonTypeConverter2?> + $converteraTextWithConvertern = JsonTypeConverter2.asNullable( + $converteraTextWithConverter, + ); +} + +class TableWithEveryColumnTypeData extends DataClass + implements Insertable { + final RowId id; + final bool? aBool; + final DateTime? aDateTime; + final String? aText; + final int? anInt; + final BigInt? anInt64; + final double? aReal; + final Uint8List? aBlob; + final TodoStatus? anIntEnum; + final MyCustomObject? aTextWithConverter; + final UuidValue? aUuid; + const TableWithEveryColumnTypeData({ + required this.id, + this.aBool, + this.aDateTime, + this.aText, + this.anInt, + this.anInt64, + this.aReal, + this.aBlob, + this.anIntEnum, + this.aTextWithConverter, + this.aUuid, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable( + $TableWithEveryColumnTypeTable.$converterid.toSql(id), + ); + } + if (!nullToAbsent || aBool != null) { + map['a_bool'] = Variable(aBool); + } + if (!nullToAbsent || aDateTime != null) { + map['a_date_time'] = Variable(aDateTime); + } + if (!nullToAbsent || aText != null) { + map['a_text'] = Variable(aText); + } + if (!nullToAbsent || anInt != null) { + map['an_int'] = Variable(anInt); + } + if (!nullToAbsent || anInt64 != null) { + map['an_int64'] = Variable(anInt64); + } + if (!nullToAbsent || aReal != null) { + map['a_real'] = Variable(aReal); + } + if (!nullToAbsent || aBlob != null) { + map['a_blob'] = Variable(aBlob); + } + if (!nullToAbsent || anIntEnum != null) { + map['an_int_enum'] = Variable( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toSql(anIntEnum), + ); + } + if (!nullToAbsent || aTextWithConverter != null) { + map['insert'] = Variable( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toSql( + aTextWithConverter, + ), + ); + } + if (!nullToAbsent || aUuid != null) { + map['a_uuid'] = Variable(aUuid, uuidType); + } + return map; + } + + TableWithEveryColumnTypeCompanion toCompanion(bool nullToAbsent) { + return TableWithEveryColumnTypeCompanion( + id: Value(id), + aBool: aBool == null && nullToAbsent + ? const Value.absent() + : Value(aBool), + aDateTime: aDateTime == null && nullToAbsent + ? const Value.absent() + : Value(aDateTime), + aText: aText == null && nullToAbsent + ? const Value.absent() + : Value(aText), + anInt: anInt == null && nullToAbsent + ? const Value.absent() + : Value(anInt), + anInt64: anInt64 == null && nullToAbsent + ? const Value.absent() + : Value(anInt64), + aReal: aReal == null && nullToAbsent + ? const Value.absent() + : Value(aReal), + aBlob: aBlob == null && nullToAbsent + ? const Value.absent() + : Value(aBlob), + anIntEnum: anIntEnum == null && nullToAbsent + ? const Value.absent() + : Value(anIntEnum), + aTextWithConverter: aTextWithConverter == null && nullToAbsent + ? const Value.absent() + : Value(aTextWithConverter), + aUuid: aUuid == null && nullToAbsent + ? const Value.absent() + : Value(aUuid), + ); + } + + factory TableWithEveryColumnTypeData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TableWithEveryColumnTypeData( + id: $TableWithEveryColumnTypeTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + aBool: serializer.fromJson(json['a_bool']), + aDateTime: serializer.fromJson(json['a_date_time']), + aText: serializer.fromJson(json['a_text']), + anInt: serializer.fromJson(json['an_int']), + anInt64: serializer.fromJson(json['an_int64']), + aReal: serializer.fromJson(json['a_real']), + aBlob: serializer.fromJson(json['a_blob']), + anIntEnum: $TableWithEveryColumnTypeTable.$converteranIntEnumn.fromJson( + serializer.fromJson(json['an_int_enum']), + ), + aTextWithConverter: $TableWithEveryColumnTypeTable + .$converteraTextWithConvertern + .fromJson( + serializer.fromJson?>(json['insert']), + ), + aUuid: serializer.fromJson(json['a_uuid']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson( + $TableWithEveryColumnTypeTable.$converterid.toJson(id), + ), + 'a_bool': serializer.toJson(aBool), + 'a_date_time': serializer.toJson(aDateTime), + 'a_text': serializer.toJson(aText), + 'an_int': serializer.toJson(anInt), + 'an_int64': serializer.toJson(anInt64), + 'a_real': serializer.toJson(aReal), + 'a_blob': serializer.toJson(aBlob), + 'an_int_enum': serializer.toJson( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toJson(anIntEnum), + ), + 'insert': serializer.toJson?>( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toJson( + aTextWithConverter, + ), + ), + 'a_uuid': serializer.toJson(aUuid), + }; + } + + TableWithEveryColumnTypeData copyWith({ + RowId? id, + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeData( + id: id ?? this.id, + aBool: aBool.present ? aBool.value : this.aBool, + aDateTime: aDateTime.present ? aDateTime.value : this.aDateTime, + aText: aText.present ? aText.value : this.aText, + anInt: anInt.present ? anInt.value : this.anInt, + anInt64: anInt64.present ? anInt64.value : this.anInt64, + aReal: aReal.present ? aReal.value : this.aReal, + aBlob: aBlob.present ? aBlob.value : this.aBlob, + anIntEnum: anIntEnum.present ? anIntEnum.value : this.anIntEnum, + aTextWithConverter: aTextWithConverter.present + ? aTextWithConverter.value + : this.aTextWithConverter, + aUuid: aUuid.present ? aUuid.value : this.aUuid, + ); + TableWithEveryColumnTypeData copyWithCompanion( + TableWithEveryColumnTypeCompanion data, + ) { + return TableWithEveryColumnTypeData( + id: data.id.present ? data.id.value : this.id, + aBool: data.aBool.present ? data.aBool.value : this.aBool, + aDateTime: data.aDateTime.present ? data.aDateTime.value : this.aDateTime, + aText: data.aText.present ? data.aText.value : this.aText, + anInt: data.anInt.present ? data.anInt.value : this.anInt, + anInt64: data.anInt64.present ? data.anInt64.value : this.anInt64, + aReal: data.aReal.present ? data.aReal.value : this.aReal, + aBlob: data.aBlob.present ? data.aBlob.value : this.aBlob, + anIntEnum: data.anIntEnum.present ? data.anIntEnum.value : this.anIntEnum, + aTextWithConverter: data.aTextWithConverter.present + ? data.aTextWithConverter.value + : this.aTextWithConverter, + aUuid: data.aUuid.present ? data.aUuid.value : this.aUuid, + ); + } + + @override + String toString() { + return (StringBuffer('TableWithEveryColumnTypeData(') + ..write('id: $id, ') + ..write('aBool: $aBool, ') + ..write('aDateTime: $aDateTime, ') + ..write('aText: $aText, ') + ..write('anInt: $anInt, ') + ..write('anInt64: $anInt64, ') + ..write('aReal: $aReal, ') + ..write('aBlob: $aBlob, ') + ..write('anIntEnum: $anIntEnum, ') + ..write('aTextWithConverter: $aTextWithConverter, ') + ..write('aUuid: $aUuid') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + aBool, + aDateTime, + aText, + anInt, + anInt64, + aReal, + $driftBlobEquality.hash(aBlob), + anIntEnum, + aTextWithConverter, + aUuid, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TableWithEveryColumnTypeData && + other.id == this.id && + other.aBool == this.aBool && + other.aDateTime == this.aDateTime && + other.aText == this.aText && + other.anInt == this.anInt && + other.anInt64 == this.anInt64 && + other.aReal == this.aReal && + $driftBlobEquality.equals(other.aBlob, this.aBlob) && + other.anIntEnum == this.anIntEnum && + other.aTextWithConverter == this.aTextWithConverter && + other.aUuid == this.aUuid); +} + +class TableWithEveryColumnTypeCompanion + extends UpdateCompanion { + final Value id; + final Value aBool; + final Value aDateTime; + final Value aText; + final Value anInt; + final Value anInt64; + final Value aReal; + final Value aBlob; + final Value anIntEnum; + final Value aTextWithConverter; + final Value aUuid; + const TableWithEveryColumnTypeCompanion({ + this.id = const Value.absent(), + this.aBool = const Value.absent(), + this.aDateTime = const Value.absent(), + this.aText = const Value.absent(), + this.anInt = const Value.absent(), + this.anInt64 = const Value.absent(), + this.aReal = const Value.absent(), + this.aBlob = const Value.absent(), + this.anIntEnum = const Value.absent(), + this.aTextWithConverter = const Value.absent(), + this.aUuid = const Value.absent(), + }); + TableWithEveryColumnTypeCompanion.insert({ + this.id = const Value.absent(), + this.aBool = const Value.absent(), + this.aDateTime = const Value.absent(), + this.aText = const Value.absent(), + this.anInt = const Value.absent(), + this.anInt64 = const Value.absent(), + this.aReal = const Value.absent(), + this.aBlob = const Value.absent(), + this.anIntEnum = const Value.absent(), + this.aTextWithConverter = const Value.absent(), + this.aUuid = const Value.absent(), + }); + static Insertable custom({ + Expression? id, + Expression? aBool, + Expression? aDateTime, + Expression? aText, + Expression? anInt, + Expression? anInt64, + Expression? aReal, + Expression? aBlob, + Expression? anIntEnum, + Expression? aTextWithConverter, + Expression? aUuid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (aBool != null) 'a_bool': aBool, + if (aDateTime != null) 'a_date_time': aDateTime, + if (aText != null) 'a_text': aText, + if (anInt != null) 'an_int': anInt, + if (anInt64 != null) 'an_int64': anInt64, + if (aReal != null) 'a_real': aReal, + if (aBlob != null) 'a_blob': aBlob, + if (anIntEnum != null) 'an_int_enum': anIntEnum, + if (aTextWithConverter != null) 'insert': aTextWithConverter, + if (aUuid != null) 'a_uuid': aUuid, + }); + } + + TableWithEveryColumnTypeCompanion copyWith({ + Value? id, + Value? aBool, + Value? aDateTime, + Value? aText, + Value? anInt, + Value? anInt64, + Value? aReal, + Value? aBlob, + Value? anIntEnum, + Value? aTextWithConverter, + Value? aUuid, + }) { + return TableWithEveryColumnTypeCompanion( + id: id ?? this.id, + aBool: aBool ?? this.aBool, + aDateTime: aDateTime ?? this.aDateTime, + aText: aText ?? this.aText, + anInt: anInt ?? this.anInt, + anInt64: anInt64 ?? this.anInt64, + aReal: aReal ?? this.aReal, + aBlob: aBlob ?? this.aBlob, + anIntEnum: anIntEnum ?? this.anIntEnum, + aTextWithConverter: aTextWithConverter ?? this.aTextWithConverter, + aUuid: aUuid ?? this.aUuid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable( + $TableWithEveryColumnTypeTable.$converterid.toSql(id.value), + ); + } + if (aBool.present) { + map['a_bool'] = Variable(aBool.value); + } + if (aDateTime.present) { + map['a_date_time'] = Variable(aDateTime.value); + } + if (aText.present) { + map['a_text'] = Variable(aText.value); + } + if (anInt.present) { + map['an_int'] = Variable(anInt.value); + } + if (anInt64.present) { + map['an_int64'] = Variable(anInt64.value); + } + if (aReal.present) { + map['a_real'] = Variable(aReal.value); + } + if (aBlob.present) { + map['a_blob'] = Variable(aBlob.value); + } + if (anIntEnum.present) { + map['an_int_enum'] = Variable( + $TableWithEveryColumnTypeTable.$converteranIntEnumn.toSql( + anIntEnum.value, + ), + ); + } + if (aTextWithConverter.present) { + map['insert'] = Variable( + $TableWithEveryColumnTypeTable.$converteraTextWithConvertern.toSql( + aTextWithConverter.value, + ), + ); + } + if (aUuid.present) { + map['a_uuid'] = Variable(aUuid.value, uuidType); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TableWithEveryColumnTypeCompanion(') + ..write('id: $id, ') + ..write('aBool: $aBool, ') + ..write('aDateTime: $aDateTime, ') + ..write('aText: $aText, ') + ..write('anInt: $anInt, ') + ..write('anInt64: $anInt64, ') + ..write('aReal: $aReal, ') + ..write('aBlob: $aBlob, ') + ..write('anIntEnum: $anIntEnum, ') + ..write('aTextWithConverter: $aTextWithConverter, ') + ..write('aUuid: $aUuid') + ..write(')')) + .toString(); + } +} + +class $DepartmentTable extends Department + with TableInfo<$DepartmentTable, DepartmentData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $DepartmentTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + @override + List get $columns => [id, name]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'department'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + DepartmentData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return DepartmentData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + ), + ); + } + + @override + $DepartmentTable createAlias(String alias) { + return $DepartmentTable(attachedDatabase, alias); + } +} + +class DepartmentData extends DataClass implements Insertable { + final int id; + final String? name; + const DepartmentData({required this.id, this.name}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + if (!nullToAbsent || name != null) { + map['name'] = Variable(name); + } + return map; + } + + DepartmentCompanion toCompanion(bool nullToAbsent) { + return DepartmentCompanion( + id: Value(id), + name: name == null && nullToAbsent ? const Value.absent() : Value(name), + ); + } + + factory DepartmentData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return DepartmentData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + }; + } + + DepartmentData copyWith({ + int? id, + Value name = const Value.absent(), + }) => DepartmentData( + id: id ?? this.id, + name: name.present ? name.value : this.name, + ); + DepartmentData copyWithCompanion(DepartmentCompanion data) { + return DepartmentData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + ); + } + + @override + String toString() { + return (StringBuffer('DepartmentData(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, name); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is DepartmentData && + other.id == this.id && + other.name == this.name); +} + +class DepartmentCompanion extends UpdateCompanion { + final Value id; + final Value name; + const DepartmentCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + }); + DepartmentCompanion.insert({ + this.id = const Value.absent(), + this.name = const Value.absent(), + }); + static Insertable custom({ + Expression? id, + Expression? name, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + }); + } + + DepartmentCompanion copyWith({Value? id, Value? name}) { + return DepartmentCompanion(id: id ?? this.id, name: name ?? this.name); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('DepartmentCompanion(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } +} + +class $ProductTable extends Product with TableInfo<$ProductTable, ProductData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $ProductTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _skuMeta = const VerificationMeta('sku'); + @override + late final GeneratedColumn sku = GeneratedColumn( + 'sku', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _departmentMeta = const VerificationMeta( + 'department', + ); + @override + late final GeneratedColumn department = GeneratedColumn( + 'department', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES department (id)', + ), + ); + @override + List get $columns => [sku, name, department]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'product'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('sku')) { + context.handle( + _skuMeta, + sku.isAcceptableOrUnknown(data['sku']!, _skuMeta), + ); + } else if (isInserting) { + context.missing(_skuMeta); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } + if (data.containsKey('department')) { + context.handle( + _departmentMeta, + department.isAcceptableOrUnknown(data['department']!, _departmentMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => const {}; + @override + ProductData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ProductData( + sku: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}sku'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + ), + department: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}department'], + ), + ); + } + + @override + $ProductTable createAlias(String alias) { + return $ProductTable(attachedDatabase, alias); + } +} + +class ProductData extends DataClass implements Insertable { + final String sku; + final String? name; + final int? department; + const ProductData({required this.sku, this.name, this.department}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['sku'] = Variable(sku); + if (!nullToAbsent || name != null) { + map['name'] = Variable(name); + } + if (!nullToAbsent || department != null) { + map['department'] = Variable(department); + } + return map; + } + + ProductCompanion toCompanion(bool nullToAbsent) { + return ProductCompanion( + sku: Value(sku), + name: name == null && nullToAbsent ? const Value.absent() : Value(name), + department: department == null && nullToAbsent + ? const Value.absent() + : Value(department), + ); + } + + factory ProductData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ProductData( + sku: serializer.fromJson(json['sku']), + name: serializer.fromJson(json['name']), + department: serializer.fromJson(json['department']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'sku': serializer.toJson(sku), + 'name': serializer.toJson(name), + 'department': serializer.toJson(department), + }; + } + + ProductData copyWith({ + String? sku, + Value name = const Value.absent(), + Value department = const Value.absent(), + }) => ProductData( + sku: sku ?? this.sku, + name: name.present ? name.value : this.name, + department: department.present ? department.value : this.department, + ); + ProductData copyWithCompanion(ProductCompanion data) { + return ProductData( + sku: data.sku.present ? data.sku.value : this.sku, + name: data.name.present ? data.name.value : this.name, + department: data.department.present + ? data.department.value + : this.department, + ); + } + + @override + String toString() { + return (StringBuffer('ProductData(') + ..write('sku: $sku, ') + ..write('name: $name, ') + ..write('department: $department') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(sku, name, department); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ProductData && + other.sku == this.sku && + other.name == this.name && + other.department == this.department); +} + +class ProductCompanion extends UpdateCompanion { + final Value sku; + final Value name; + final Value department; + final Value rowid; + const ProductCompanion({ + this.sku = const Value.absent(), + this.name = const Value.absent(), + this.department = const Value.absent(), + this.rowid = const Value.absent(), + }); + ProductCompanion.insert({ + required String sku, + this.name = const Value.absent(), + this.department = const Value.absent(), + this.rowid = const Value.absent(), + }) : sku = Value(sku); + static Insertable custom({ + Expression? sku, + Expression? name, + Expression? department, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (sku != null) 'sku': sku, + if (name != null) 'name': name, + if (department != null) 'department': department, + if (rowid != null) 'rowid': rowid, + }); + } + + ProductCompanion copyWith({ + Value? sku, + Value? name, + Value? department, + Value? rowid, + }) { + return ProductCompanion( + sku: sku ?? this.sku, + name: name ?? this.name, + department: department ?? this.department, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (sku.present) { + map['sku'] = Variable(sku.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (department.present) { + map['department'] = Variable(department.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ProductCompanion(') + ..write('sku: $sku, ') + ..write('name: $name, ') + ..write('department: $department, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $StoreTable extends Store with TableInfo<$StoreTable, StoreData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $StoreTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + @override + List get $columns => [id, name]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'store'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + StoreData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return StoreData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + ), + ); + } + + @override + $StoreTable createAlias(String alias) { + return $StoreTable(attachedDatabase, alias); + } +} + +class StoreData extends DataClass implements Insertable { + final int id; + final String? name; + const StoreData({required this.id, this.name}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + if (!nullToAbsent || name != null) { + map['name'] = Variable(name); + } + return map; + } + + StoreCompanion toCompanion(bool nullToAbsent) { + return StoreCompanion( + id: Value(id), + name: name == null && nullToAbsent ? const Value.absent() : Value(name), + ); + } + + factory StoreData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return StoreData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + }; + } + + StoreData copyWith({int? id, Value name = const Value.absent()}) => + StoreData(id: id ?? this.id, name: name.present ? name.value : this.name); + StoreData copyWithCompanion(StoreCompanion data) { + return StoreData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + ); + } + + @override + String toString() { + return (StringBuffer('StoreData(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, name); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is StoreData && other.id == this.id && other.name == this.name); +} + +class StoreCompanion extends UpdateCompanion { + final Value id; + final Value name; + const StoreCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + }); + StoreCompanion.insert({ + this.id = const Value.absent(), + this.name = const Value.absent(), + }); + static Insertable custom({ + Expression? id, + Expression? name, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + }); + } + + StoreCompanion copyWith({Value? id, Value? name}) { + return StoreCompanion(id: id ?? this.id, name: name ?? this.name); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('StoreCompanion(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } +} + +class $ListingTable extends Listing with TableInfo<$ListingTable, ListingData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $ListingTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ); + static const VerificationMeta _productMeta = const VerificationMeta( + 'product', + ); + @override + late final GeneratedColumn product = GeneratedColumn( + 'product', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES product (sku)', + ), + ); + static const VerificationMeta _storeMeta = const VerificationMeta('store'); + @override + late final GeneratedColumn store = GeneratedColumn( + 'store', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES store (id)', + ), + ); + static const VerificationMeta _priceMeta = const VerificationMeta('price'); + @override + late final GeneratedColumn price = GeneratedColumn( + 'price', + aliasedName, + true, + type: DriftSqlType.double, + requiredDuringInsert: false, + ); + @override + List get $columns => [id, product, store, price]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'listing'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('product')) { + context.handle( + _productMeta, + product.isAcceptableOrUnknown(data['product']!, _productMeta), + ); + } else if (isInserting) { + context.missing(_productMeta); + } + if (data.containsKey('store')) { + context.handle( + _storeMeta, + store.isAcceptableOrUnknown(data['store']!, _storeMeta), + ); + } + if (data.containsKey('price')) { + context.handle( + _priceMeta, + price.isAcceptableOrUnknown(data['price']!, _priceMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + ListingData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ListingData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + product: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}product'], + )!, + store: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}store'], + ), + price: attachedDatabase.typeMapping.read( + DriftSqlType.double, + data['${effectivePrefix}price'], + ), + ); + } + + @override + $ListingTable createAlias(String alias) { + return $ListingTable(attachedDatabase, alias); + } +} + +class ListingData extends DataClass implements Insertable { + final int id; + final String product; + final int? store; + final double? price; + const ListingData({ + required this.id, + required this.product, + this.store, + this.price, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['product'] = Variable(product); + if (!nullToAbsent || store != null) { + map['store'] = Variable(store); + } + if (!nullToAbsent || price != null) { + map['price'] = Variable(price); + } + return map; + } + + ListingCompanion toCompanion(bool nullToAbsent) { + return ListingCompanion( + id: Value(id), + product: Value(product), + store: store == null && nullToAbsent + ? const Value.absent() + : Value(store), + price: price == null && nullToAbsent + ? const Value.absent() + : Value(price), + ); + } + + factory ListingData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ListingData( + id: serializer.fromJson(json['id']), + product: serializer.fromJson(json['product']), + store: serializer.fromJson(json['store']), + price: serializer.fromJson(json['price']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'product': serializer.toJson(product), + 'store': serializer.toJson(store), + 'price': serializer.toJson(price), + }; + } + + ListingData copyWith({ + int? id, + String? product, + Value store = const Value.absent(), + Value price = const Value.absent(), + }) => ListingData( + id: id ?? this.id, + product: product ?? this.product, + store: store.present ? store.value : this.store, + price: price.present ? price.value : this.price, + ); + ListingData copyWithCompanion(ListingCompanion data) { + return ListingData( + id: data.id.present ? data.id.value : this.id, + product: data.product.present ? data.product.value : this.product, + store: data.store.present ? data.store.value : this.store, + price: data.price.present ? data.price.value : this.price, + ); + } + + @override + String toString() { + return (StringBuffer('ListingData(') + ..write('id: $id, ') + ..write('product: $product, ') + ..write('store: $store, ') + ..write('price: $price') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, product, store, price); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ListingData && + other.id == this.id && + other.product == this.product && + other.store == this.store && + other.price == this.price); +} + +class ListingCompanion extends UpdateCompanion { + final Value id; + final Value product; + final Value store; + final Value price; + const ListingCompanion({ + this.id = const Value.absent(), + this.product = const Value.absent(), + this.store = const Value.absent(), + this.price = const Value.absent(), + }); + ListingCompanion.insert({ + this.id = const Value.absent(), + required String product, + this.store = const Value.absent(), + this.price = const Value.absent(), + }) : product = Value(product); + static Insertable custom({ + Expression? id, + Expression? product, + Expression? store, + Expression? price, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (product != null) 'product': product, + if (store != null) 'store': store, + if (price != null) 'price': price, + }); + } + + ListingCompanion copyWith({ + Value? id, + Value? product, + Value? store, + Value? price, + }) { + return ListingCompanion( + id: id ?? this.id, + product: product ?? this.product, + store: store ?? this.store, + price: price ?? this.price, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (product.present) { + map['product'] = Variable(product.value); + } + if (store.present) { + map['store'] = Variable(store.value); + } + if (price.present) { + map['price'] = Variable(price.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ListingCompanion(') + ..write('id: $id, ') + ..write('product: $product, ') + ..write('store: $store, ') + ..write('price: $price') + ..write(')')) + .toString(); + } +} + +class CategoryTodoCountViewData extends DataClass { + final int? categoryId; + final String? description; + final int? itemCount; + const CategoryTodoCountViewData({ + this.categoryId, + this.description, + this.itemCount, + }); + factory CategoryTodoCountViewData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CategoryTodoCountViewData( + categoryId: serializer.fromJson(json['category_id']), + description: serializer.fromJson(json['description']), + itemCount: serializer.fromJson(json['item_count']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'category_id': serializer.toJson(categoryId), + 'description': serializer.toJson(description), + 'item_count': serializer.toJson(itemCount), + }; + } + + CategoryTodoCountViewData copyWith({ + Value categoryId = const Value.absent(), + Value description = const Value.absent(), + Value itemCount = const Value.absent(), + }) => CategoryTodoCountViewData( + categoryId: categoryId.present ? categoryId.value : this.categoryId, + description: description.present ? description.value : this.description, + itemCount: itemCount.present ? itemCount.value : this.itemCount, + ); + @override + String toString() { + return (StringBuffer('CategoryTodoCountViewData(') + ..write('categoryId: $categoryId, ') + ..write('description: $description, ') + ..write('itemCount: $itemCount') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(categoryId, description, itemCount); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CategoryTodoCountViewData && + other.categoryId == this.categoryId && + other.description == this.description && + other.itemCount == this.itemCount); +} + +class $CategoryTodoCountViewView + extends ViewInfo<$CategoryTodoCountViewView, CategoryTodoCountViewData> + implements HasResultSet { + final String? _alias; + @override + final _$TodoDb attachedDatabase; + $CategoryTodoCountViewView(this.attachedDatabase, [this._alias]); + $TodosTableTable get todos => attachedDatabase.todosTable.createAlias('t0'); + $CategoriesTable get categories => + attachedDatabase.categories.createAlias('t1'); + @override + List get $columns => [categoryId, description, itemCount]; + @override + String get aliasedName => _alias ?? entityName; + @override + String get entityName => 'category_todo_count_view'; + @override + Map? get createViewStatements => null; + @override + $CategoryTodoCountViewView get asDslTable => this; + @override + CategoryTodoCountViewData map( + Map data, { + String? tablePrefix, + }) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CategoryTodoCountViewData( + categoryId: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}category_id'], + ), + description: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}description'], + ), + itemCount: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}item_count'], + ), + ); + } + + late final GeneratedColumn categoryId = GeneratedColumn( + 'category_id', + aliasedName, + true, + generatedAs: GeneratedAs(categories.id, false), + type: DriftSqlType.int, + ); + late final GeneratedColumn description = GeneratedColumn( + 'description', + aliasedName, + true, + generatedAs: GeneratedAs( + categories.description + const Variable('!'), + false, + ), + type: DriftSqlType.string, + ); + late final GeneratedColumn itemCount = GeneratedColumn( + 'item_count', + aliasedName, + true, + generatedAs: GeneratedAs(BaseAggregate(todos.id).count(), false), + type: DriftSqlType.int, + ); + @override + $CategoryTodoCountViewView createAlias(String alias) { + return $CategoryTodoCountViewView(attachedDatabase, alias); + } + + @override + Query? get query => + (attachedDatabase.selectOnly(categories)..addColumns($columns)).join([ + innerJoin(todos, todos.category.equalsExp(categories.id)), + ])..groupBy([categories.id]); + @override + Set get readTables => const {'todos', 'categories'}; +} + +class TodoWithCategoryViewData extends DataClass { + final String? title; + final String description; + const TodoWithCategoryViewData({this.title, required this.description}); + factory TodoWithCategoryViewData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoWithCategoryViewData( + title: serializer.fromJson(json['title']), + description: serializer.fromJson(json['desc']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'title': serializer.toJson(title), + 'desc': serializer.toJson(description), + }; + } + + TodoWithCategoryViewData copyWith({ + Value title = const Value.absent(), + String? description, + }) => TodoWithCategoryViewData( + title: title.present ? title.value : this.title, + description: description ?? this.description, + ); + @override + String toString() { + return (StringBuffer('TodoWithCategoryViewData(') + ..write('title: $title, ') + ..write('description: $description') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(title, description); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoWithCategoryViewData && + other.title == this.title && + other.description == this.description); +} + +class $TodoWithCategoryViewView + extends ViewInfo<$TodoWithCategoryViewView, TodoWithCategoryViewData> + implements HasResultSet { + final String? _alias; + @override + final _$TodoDb attachedDatabase; + $TodoWithCategoryViewView(this.attachedDatabase, [this._alias]); + $TodosTableTable get todos => attachedDatabase.todosTable.createAlias('t0'); + $CategoriesTable get categories => + attachedDatabase.categories.createAlias('t1'); + @override + List get $columns => [title, description]; + @override + String get aliasedName => _alias ?? entityName; + @override + String get entityName => 'todo_with_category_view'; + @override + Map? get createViewStatements => null; + @override + $TodoWithCategoryViewView get asDslTable => this; + @override + TodoWithCategoryViewData map( + Map data, { + String? tablePrefix, + }) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoWithCategoryViewData( + title: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}title'], + ), + description: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}desc'], + )!, + ); + } + + late final GeneratedColumn title = GeneratedColumn( + 'title', + aliasedName, + true, + generatedAs: GeneratedAs(todos.title, false), + type: DriftSqlType.string, + ); + late final GeneratedColumn description = GeneratedColumn( + 'desc', + aliasedName, + false, + generatedAs: GeneratedAs(categories.description, false), + type: DriftSqlType.string, + ); + @override + $TodoWithCategoryViewView createAlias(String alias) { + return $TodoWithCategoryViewView(attachedDatabase, alias); + } + + @override + Query? get query => (attachedDatabase.selectOnly(todos)..addColumns($columns)) + .join([innerJoin(categories, categories.id.equalsExp(todos.category))]); + @override + Set get readTables => const {'todos', 'categories'}; +} + +abstract class _$TodoDb extends GeneratedDatabase { + _$TodoDb(QueryExecutor e) : super(e); + $TodoDbManager get managers => $TodoDbManager(this); + late final $CategoriesTable categories = $CategoriesTable(this); + late final $TodosTableTable todosTable = $TodosTableTable(this); + late final $UsersTable users = $UsersTable(this); + late final $SharedTodosTable sharedTodos = $SharedTodosTable(this); + late final $TableWithoutPKTable tableWithoutPK = $TableWithoutPKTable(this); + late final $PureDefaultsTable pureDefaults = $PureDefaultsTable(this); + late final $WithCustomTypeTable withCustomType = $WithCustomTypeTable(this); + late final $TableWithEveryColumnTypeTable tableWithEveryColumnType = + $TableWithEveryColumnTypeTable(this); + late final $DepartmentTable department = $DepartmentTable(this); + late final $ProductTable product = $ProductTable(this); + late final $StoreTable store = $StoreTable(this); + late final $ListingTable listing = $ListingTable(this); + late final $CategoryTodoCountViewView categoryTodoCountView = + $CategoryTodoCountViewView(this); + late final $TodoWithCategoryViewView todoWithCategoryView = + $TodoWithCategoryViewView(this); + late final SomeDao someDao = SomeDao(this as TodoDb); + Selectable allTodosWithCategory() { + return customSelect( + 'SELECT t.*, c.id AS catId, c."desc" AS catDesc FROM todos AS t INNER JOIN categories AS c ON c.id = t.category', + variables: [], + readsFrom: {categories, todosTable}, + ).map( + (QueryRow row) => AllTodosWithCategoryResult( + id: $TodosTableTable.$converterid.fromSql(row.read('id')), + title: row.readNullable('title'), + content: row.read('content'), + targetDate: row.readNullable('target_date'), + category: NullAwareTypeConverter.wrapFromSql( + $TodosTableTable.$convertercategory, + row.readNullable('category'), + ), + status: NullAwareTypeConverter.wrapFromSql( + $TodosTableTable.$converterstatus, + row.readNullable('status'), + ), + catId: $CategoriesTable.$converterid.fromSql(row.read('catId')), + catDesc: row.read('catDesc'), + ), + ); + } + + Future deleteTodoById(RowId var1) { + return customUpdate( + switch (executor.dialect) { + SqlDialect.sqlite => 'DELETE FROM todos WHERE id = ?1', + SqlDialect.postgres || _ => 'DELETE FROM todos WHERE id = \$1', + }, + variables: [Variable($TodosTableTable.$converterid.toSql(var1))], + updates: {todosTable}, + updateKind: UpdateKind.delete, + ); + } + + Selectable withIn(String? var1, String? var2, List var3) { + var $arrayStartIndex = 3; + final expandedvar3 = $expandVar($arrayStartIndex, var3.length); + $arrayStartIndex += var3.length; + return customSelect( + switch (executor.dialect) { + SqlDialect.sqlite => + 'SELECT * FROM todos WHERE title = ?2 OR id IN ($expandedvar3) OR title = ?1', + SqlDialect.postgres || _ => + 'SELECT * FROM todos WHERE title = \$2 OR id IN ($expandedvar3) OR title = \$1', + }, + variables: [ + Variable(var1), + Variable(var2), + for (var $ in var3) + Variable($TodosTableTable.$converterid.toSql($)), + ], + readsFrom: {todosTable}, + ).asyncMap(todosTable.mapFromRow); + } + + Selectable search(RowId id) { + return customSelect( + switch (executor.dialect) { + SqlDialect.sqlite => + 'SELECT * FROM todos WHERE CASE WHEN -1 = ?1 THEN 1 ELSE id = ?1 END', + SqlDialect.postgres || _ => + 'SELECT * FROM todos WHERE CASE WHEN -1 = \$1 THEN 1 ELSE id = \$1 END', + }, + variables: [Variable($TodosTableTable.$converterid.toSql(id))], + readsFrom: {todosTable}, + ).asyncMap(todosTable.mapFromRow); + } + + Selectable findCustom() { + return customSelect( + 'SELECT custom FROM table_without_p_k WHERE some_float < 10', + variables: [], + readsFrom: {tableWithoutPK}, + ).map( + (QueryRow row) => $TableWithoutPKTable.$convertercustom.fromSql( + row.read('custom'), + ), + ); + } + + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + categories, + todosTable, + users, + sharedTodos, + tableWithoutPK, + pureDefaults, + withCustomType, + tableWithEveryColumnType, + department, + product, + store, + listing, + categoryTodoCountView, + todoWithCategoryView, + ]; + @override + DriftDatabaseOptions get options => + const DriftDatabaseOptions(storeDateTimeAsText: true); +} + +typedef $$CategoriesTableCreateCompanionBuilder = + CategoriesCompanion Function({ + Value id, + required String description, + Value priority, + }); +typedef $$CategoriesTableUpdateCompanionBuilder = + CategoriesCompanion Function({ + Value id, + Value description, + Value priority, + }); + +final class $$CategoriesTableReferences + extends BaseReferences<_$TodoDb, $CategoriesTable, Category> { + $$CategoriesTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static MultiTypedResultKey<$TodosTableTable, List> _todosTable( + _$TodoDb db, + ) => MultiTypedResultKey.fromTable( + db.todosTable, + aliasName: $_aliasNameGenerator(db.categories.id, db.todosTable.category), + ); + + $$TodosTableTableProcessedTableManager get todos { + final manager = $$TodosTableTableTableManager( + $_db, + $_db.todosTable, + ).filter((f) => f.category.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_todosTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache), + ); + } +} + +class $$CategoriesTableFilterComposer + extends Composer<_$TodoDb, $CategoriesTable> { + $$CategoriesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters + get priority => $composableBuilder( + column: $table.priority, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => ColumnFilters(column), + ); + + Expression todos( + Expression Function($$TodosTableTableFilterComposer f) f, + ) { + final $$TodosTableTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.todosTable, + getReferencedColumn: (t) => t.category, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$TodosTableTableFilterComposer( + $db: $db, + $table: $db.todosTable, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$CategoriesTableOrderingComposer + extends Composer<_$TodoDb, $CategoriesTable> { + $$CategoriesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get priority => $composableBuilder( + column: $table.priority, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CategoriesTableAnnotationComposer + extends Composer<_$TodoDb, $CategoriesTable> { + $$CategoriesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get description => $composableBuilder( + column: $table.description, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get priority => + $composableBuilder(column: $table.priority, builder: (column) => column); + + GeneratedColumn get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => column, + ); + + Expression todos( + Expression Function($$TodosTableTableAnnotationComposer a) f, + ) { + final $$TodosTableTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.todosTable, + getReferencedColumn: (t) => t.category, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$TodosTableTableAnnotationComposer( + $db: $db, + $table: $db.todosTable, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$CategoriesTableTableManager + extends + RootTableManager< + _$TodoDb, + $CategoriesTable, + Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (Category, $$CategoriesTableReferences), + Category, + PrefetchHooks Function({bool todos}) + > { + $$CategoriesTableTableManager(_$TodoDb db, $CategoriesTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CategoriesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CategoriesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CategoriesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value description = const Value.absent(), + Value priority = const Value.absent(), + }) => CategoriesCompanion( + id: id, + description: description, + priority: priority, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String description, + Value priority = const Value.absent(), + }) => CategoriesCompanion.insert( + id: id, + description: description, + priority: priority, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$CategoriesTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({todos = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [if (todos) db.todosTable], + addJoins: null, + getPrefetchedDataCallback: (items) async { + return [ + if (todos) + await $_getPrefetchedData< + Category, + $CategoriesTable, + TodoEntry + >( + currentTable: table, + referencedTable: $$CategoriesTableReferences._todosTable( + db, + ), + managerFromTypedResult: (p0) => + $$CategoriesTableReferences(db, table, p0).todos, + referencedItemsForCurrentItem: (item, referencedItems) => + referencedItems.where((e) => e.category == item.id), + typedResults: items, + ), + ]; + }, + ); + }, + ), + ); +} + +typedef $$CategoriesTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $CategoriesTable, + Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (Category, $$CategoriesTableReferences), + Category, + PrefetchHooks Function({bool todos}) + >; +typedef $$TodosTableTableCreateCompanionBuilder = + TodosTableCompanion Function({ + Value id, + Value title, + required String content, + Value targetDate, + Value category, + Value status, + }); +typedef $$TodosTableTableUpdateCompanionBuilder = + TodosTableCompanion Function({ + Value id, + Value title, + Value content, + Value targetDate, + Value category, + Value status, + }); + +final class $$TodosTableTableReferences + extends BaseReferences<_$TodoDb, $TodosTableTable, TodoEntry> { + $$TodosTableTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static $CategoriesTable _categoryTable(_$TodoDb db) => + db.categories.createAlias( + $_aliasNameGenerator(db.todosTable.category, db.categories.id), + ); + + $$CategoriesTableProcessedTableManager? get category { + final $_column = $_itemColumn('category'); + if ($_column == null) return null; + final manager = $$CategoriesTableTableManager( + $_db, + $_db.categories, + ).filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_categoryTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item]), + ); + } +} + +class $$TodosTableTableFilterComposer + extends Composer<_$TodoDb, $TodosTableTable> { + $$TodosTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get content => $composableBuilder( + column: $table.content, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get status => + $composableBuilder( + column: $table.status, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + $$CategoriesTableFilterComposer get category { + final $$CategoriesTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableFilterComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableOrderingComposer + extends Composer<_$TodoDb, $TodosTableTable> { + $$TodosTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get content => $composableBuilder( + column: $table.content, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get status => $composableBuilder( + column: $table.status, + builder: (column) => ColumnOrderings(column), + ); + + $$CategoriesTableOrderingComposer get category { + final $$CategoriesTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableOrderingComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableAnnotationComposer + extends Composer<_$TodoDb, $TodosTableTable> { + $$TodosTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get title => + $composableBuilder(column: $table.title, builder: (column) => column); + + GeneratedColumn get content => + $composableBuilder(column: $table.content, builder: (column) => column); + + GeneratedColumn get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get status => + $composableBuilder(column: $table.status, builder: (column) => column); + + $$CategoriesTableAnnotationComposer get category { + final $$CategoriesTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableAnnotationComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableTableManager + extends + RootTableManager< + _$TodoDb, + $TodosTableTable, + TodoEntry, + $$TodosTableTableFilterComposer, + $$TodosTableTableOrderingComposer, + $$TodosTableTableAnnotationComposer, + $$TodosTableTableCreateCompanionBuilder, + $$TodosTableTableUpdateCompanionBuilder, + (TodoEntry, $$TodosTableTableReferences), + TodoEntry, + PrefetchHooks Function({bool category}) + > { + $$TodosTableTableTableManager(_$TodoDb db, $TodosTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TodosTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$TodosTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$TodosTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value title = const Value.absent(), + Value content = const Value.absent(), + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodosTableCompanion( + id: id, + title: title, + content: content, + targetDate: targetDate, + category: category, + status: status, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value title = const Value.absent(), + required String content, + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodosTableCompanion.insert( + id: id, + title: title, + content: content, + targetDate: targetDate, + category: category, + status: status, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$TodosTableTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({category = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [], + addJoins: + < + T extends TableManagerState< + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic + > + >(state) { + if (category) { + state = + state.withJoin( + currentTable: table, + currentColumn: table.category, + referencedTable: $$TodosTableTableReferences + ._categoryTable(db), + referencedColumn: $$TodosTableTableReferences + ._categoryTable(db) + .id, + ) + as T; + } + + return state; + }, + getPrefetchedDataCallback: (items) async { + return []; + }, + ); + }, + ), + ); +} + +typedef $$TodosTableTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $TodosTableTable, + TodoEntry, + $$TodosTableTableFilterComposer, + $$TodosTableTableOrderingComposer, + $$TodosTableTableAnnotationComposer, + $$TodosTableTableCreateCompanionBuilder, + $$TodosTableTableUpdateCompanionBuilder, + (TodoEntry, $$TodosTableTableReferences), + TodoEntry, + PrefetchHooks Function({bool category}) + >; +typedef $$UsersTableCreateCompanionBuilder = + UsersCompanion Function({ + Value id, + required String name, + Value isAwesome, + required Uint8List profilePicture, + Value creationTime, + }); +typedef $$UsersTableUpdateCompanionBuilder = + UsersCompanion Function({ + Value id, + Value name, + Value isAwesome, + Value profilePicture, + Value creationTime, + }); + +class $$UsersTableFilterComposer extends Composer<_$TodoDb, $UsersTable> { + $$UsersTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isAwesome => $composableBuilder( + column: $table.isAwesome, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => ColumnFilters(column), + ); +} + +class $$UsersTableOrderingComposer extends Composer<_$TodoDb, $UsersTable> { + $$UsersTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isAwesome => $composableBuilder( + column: $table.isAwesome, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$UsersTableAnnotationComposer extends Composer<_$TodoDb, $UsersTable> { + $$UsersTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + GeneratedColumn get isAwesome => + $composableBuilder(column: $table.isAwesome, builder: (column) => column); + + GeneratedColumn get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => column, + ); + + GeneratedColumn get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => column, + ); +} + +class $$UsersTableTableManager + extends + RootTableManager< + _$TodoDb, + $UsersTable, + User, + $$UsersTableFilterComposer, + $$UsersTableOrderingComposer, + $$UsersTableAnnotationComposer, + $$UsersTableCreateCompanionBuilder, + $$UsersTableUpdateCompanionBuilder, + (User, BaseReferences<_$TodoDb, $UsersTable, User>), + User, + PrefetchHooks Function() + > { + $$UsersTableTableManager(_$TodoDb db, $UsersTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$UsersTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$UsersTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$UsersTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value isAwesome = const Value.absent(), + Value profilePicture = const Value.absent(), + Value creationTime = const Value.absent(), + }) => UsersCompanion( + id: id, + name: name, + isAwesome: isAwesome, + profilePicture: profilePicture, + creationTime: creationTime, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String name, + Value isAwesome = const Value.absent(), + required Uint8List profilePicture, + Value creationTime = const Value.absent(), + }) => UsersCompanion.insert( + id: id, + name: name, + isAwesome: isAwesome, + profilePicture: profilePicture, + creationTime: creationTime, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$UsersTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $UsersTable, + User, + $$UsersTableFilterComposer, + $$UsersTableOrderingComposer, + $$UsersTableAnnotationComposer, + $$UsersTableCreateCompanionBuilder, + $$UsersTableUpdateCompanionBuilder, + (User, BaseReferences<_$TodoDb, $UsersTable, User>), + User, + PrefetchHooks Function() + >; +typedef $$SharedTodosTableCreateCompanionBuilder = + SharedTodosCompanion Function({ + required int todo, + required int user, + Value rowid, + }); +typedef $$SharedTodosTableUpdateCompanionBuilder = + SharedTodosCompanion Function({ + Value todo, + Value user, + Value rowid, + }); + +class $$SharedTodosTableFilterComposer + extends Composer<_$TodoDb, $SharedTodosTable> { + $$SharedTodosTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get todo => $composableBuilder( + column: $table.todo, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get user => $composableBuilder( + column: $table.user, + builder: (column) => ColumnFilters(column), + ); +} + +class $$SharedTodosTableOrderingComposer + extends Composer<_$TodoDb, $SharedTodosTable> { + $$SharedTodosTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get todo => $composableBuilder( + column: $table.todo, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get user => $composableBuilder( + column: $table.user, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$SharedTodosTableAnnotationComposer + extends Composer<_$TodoDb, $SharedTodosTable> { + $$SharedTodosTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get todo => + $composableBuilder(column: $table.todo, builder: (column) => column); + + GeneratedColumn get user => + $composableBuilder(column: $table.user, builder: (column) => column); +} + +class $$SharedTodosTableTableManager + extends + RootTableManager< + _$TodoDb, + $SharedTodosTable, + SharedTodo, + $$SharedTodosTableFilterComposer, + $$SharedTodosTableOrderingComposer, + $$SharedTodosTableAnnotationComposer, + $$SharedTodosTableCreateCompanionBuilder, + $$SharedTodosTableUpdateCompanionBuilder, + (SharedTodo, BaseReferences<_$TodoDb, $SharedTodosTable, SharedTodo>), + SharedTodo, + PrefetchHooks Function() + > { + $$SharedTodosTableTableManager(_$TodoDb db, $SharedTodosTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$SharedTodosTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$SharedTodosTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$SharedTodosTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value todo = const Value.absent(), + Value user = const Value.absent(), + Value rowid = const Value.absent(), + }) => SharedTodosCompanion(todo: todo, user: user, rowid: rowid), + createCompanionCallback: + ({ + required int todo, + required int user, + Value rowid = const Value.absent(), + }) => SharedTodosCompanion.insert( + todo: todo, + user: user, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$SharedTodosTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $SharedTodosTable, + SharedTodo, + $$SharedTodosTableFilterComposer, + $$SharedTodosTableOrderingComposer, + $$SharedTodosTableAnnotationComposer, + $$SharedTodosTableCreateCompanionBuilder, + $$SharedTodosTableUpdateCompanionBuilder, + (SharedTodo, BaseReferences<_$TodoDb, $SharedTodosTable, SharedTodo>), + SharedTodo, + PrefetchHooks Function() + >; +typedef $$TableWithoutPKTableCreateCompanionBuilder = + TableWithoutPKCompanion Function({ + required int notReallyAnId, + required double someFloat, + Value webSafeInt, + Value custom, + Value rowid, + }); +typedef $$TableWithoutPKTableUpdateCompanionBuilder = + TableWithoutPKCompanion Function({ + Value notReallyAnId, + Value someFloat, + Value webSafeInt, + Value custom, + Value rowid, + }); + +class $$TableWithoutPKTableFilterComposer + extends Composer<_$TodoDb, $TableWithoutPKTable> { + $$TableWithoutPKTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get notReallyAnId => $composableBuilder( + column: $table.notReallyAnId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get someFloat => $composableBuilder( + column: $table.someFloat, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get webSafeInt => $composableBuilder( + column: $table.webSafeInt, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters + get custom => $composableBuilder( + column: $table.custom, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); +} + +class $$TableWithoutPKTableOrderingComposer + extends Composer<_$TodoDb, $TableWithoutPKTable> { + $$TableWithoutPKTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get notReallyAnId => $composableBuilder( + column: $table.notReallyAnId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get someFloat => $composableBuilder( + column: $table.someFloat, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get webSafeInt => $composableBuilder( + column: $table.webSafeInt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get custom => $composableBuilder( + column: $table.custom, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$TableWithoutPKTableAnnotationComposer + extends Composer<_$TodoDb, $TableWithoutPKTable> { + $$TableWithoutPKTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get notReallyAnId => $composableBuilder( + column: $table.notReallyAnId, + builder: (column) => column, + ); + + GeneratedColumn get someFloat => + $composableBuilder(column: $table.someFloat, builder: (column) => column); + + GeneratedColumn get webSafeInt => $composableBuilder( + column: $table.webSafeInt, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get custom => + $composableBuilder(column: $table.custom, builder: (column) => column); +} + +class $$TableWithoutPKTableTableManager + extends + RootTableManager< + _$TodoDb, + $TableWithoutPKTable, + CustomRowClass, + $$TableWithoutPKTableFilterComposer, + $$TableWithoutPKTableOrderingComposer, + $$TableWithoutPKTableAnnotationComposer, + $$TableWithoutPKTableCreateCompanionBuilder, + $$TableWithoutPKTableUpdateCompanionBuilder, + ( + CustomRowClass, + BaseReferences<_$TodoDb, $TableWithoutPKTable, CustomRowClass>, + ), + CustomRowClass, + PrefetchHooks Function() + > { + $$TableWithoutPKTableTableManager(_$TodoDb db, $TableWithoutPKTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TableWithoutPKTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$TableWithoutPKTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$TableWithoutPKTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value notReallyAnId = const Value.absent(), + Value someFloat = const Value.absent(), + Value webSafeInt = const Value.absent(), + Value custom = const Value.absent(), + Value rowid = const Value.absent(), + }) => TableWithoutPKCompanion( + notReallyAnId: notReallyAnId, + someFloat: someFloat, + webSafeInt: webSafeInt, + custom: custom, + rowid: rowid, + ), + createCompanionCallback: + ({ + required int notReallyAnId, + required double someFloat, + Value webSafeInt = const Value.absent(), + Value custom = const Value.absent(), + Value rowid = const Value.absent(), + }) => TableWithoutPKCompanion.insert( + notReallyAnId: notReallyAnId, + someFloat: someFloat, + webSafeInt: webSafeInt, + custom: custom, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$TableWithoutPKTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $TableWithoutPKTable, + CustomRowClass, + $$TableWithoutPKTableFilterComposer, + $$TableWithoutPKTableOrderingComposer, + $$TableWithoutPKTableAnnotationComposer, + $$TableWithoutPKTableCreateCompanionBuilder, + $$TableWithoutPKTableUpdateCompanionBuilder, + ( + CustomRowClass, + BaseReferences<_$TodoDb, $TableWithoutPKTable, CustomRowClass>, + ), + CustomRowClass, + PrefetchHooks Function() + >; +typedef $$PureDefaultsTableCreateCompanionBuilder = + PureDefaultsCompanion Function({ + Value txt, + Value rowid, + }); +typedef $$PureDefaultsTableUpdateCompanionBuilder = + PureDefaultsCompanion Function({ + Value txt, + Value rowid, + }); + +class $$PureDefaultsTableFilterComposer + extends Composer<_$TodoDb, $PureDefaultsTable> { + $$PureDefaultsTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters + get txt => $composableBuilder( + column: $table.txt, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); +} + +class $$PureDefaultsTableOrderingComposer + extends Composer<_$TodoDb, $PureDefaultsTable> { + $$PureDefaultsTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get txt => $composableBuilder( + column: $table.txt, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$PureDefaultsTableAnnotationComposer + extends Composer<_$TodoDb, $PureDefaultsTable> { + $$PureDefaultsTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get txt => + $composableBuilder(column: $table.txt, builder: (column) => column); +} + +class $$PureDefaultsTableTableManager + extends + RootTableManager< + _$TodoDb, + $PureDefaultsTable, + PureDefault, + $$PureDefaultsTableFilterComposer, + $$PureDefaultsTableOrderingComposer, + $$PureDefaultsTableAnnotationComposer, + $$PureDefaultsTableCreateCompanionBuilder, + $$PureDefaultsTableUpdateCompanionBuilder, + ( + PureDefault, + BaseReferences<_$TodoDb, $PureDefaultsTable, PureDefault>, + ), + PureDefault, + PrefetchHooks Function() + > { + $$PureDefaultsTableTableManager(_$TodoDb db, $PureDefaultsTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$PureDefaultsTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$PureDefaultsTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$PureDefaultsTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value txt = const Value.absent(), + Value rowid = const Value.absent(), + }) => PureDefaultsCompanion(txt: txt, rowid: rowid), + createCompanionCallback: + ({ + Value txt = const Value.absent(), + Value rowid = const Value.absent(), + }) => PureDefaultsCompanion.insert(txt: txt, rowid: rowid), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$PureDefaultsTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $PureDefaultsTable, + PureDefault, + $$PureDefaultsTableFilterComposer, + $$PureDefaultsTableOrderingComposer, + $$PureDefaultsTableAnnotationComposer, + $$PureDefaultsTableCreateCompanionBuilder, + $$PureDefaultsTableUpdateCompanionBuilder, + (PureDefault, BaseReferences<_$TodoDb, $PureDefaultsTable, PureDefault>), + PureDefault, + PrefetchHooks Function() + >; +typedef $$WithCustomTypeTableCreateCompanionBuilder = + WithCustomTypeCompanion Function({required UuidValue id, Value rowid}); +typedef $$WithCustomTypeTableUpdateCompanionBuilder = + WithCustomTypeCompanion Function({Value id, Value rowid}); + +class $$WithCustomTypeTableFilterComposer + extends Composer<_$TodoDb, $WithCustomTypeTable> { + $$WithCustomTypeTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); +} + +class $$WithCustomTypeTableOrderingComposer + extends Composer<_$TodoDb, $WithCustomTypeTable> { + $$WithCustomTypeTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$WithCustomTypeTableAnnotationComposer + extends Composer<_$TodoDb, $WithCustomTypeTable> { + $$WithCustomTypeTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); +} + +class $$WithCustomTypeTableTableManager + extends + RootTableManager< + _$TodoDb, + $WithCustomTypeTable, + WithCustomTypeData, + $$WithCustomTypeTableFilterComposer, + $$WithCustomTypeTableOrderingComposer, + $$WithCustomTypeTableAnnotationComposer, + $$WithCustomTypeTableCreateCompanionBuilder, + $$WithCustomTypeTableUpdateCompanionBuilder, + ( + WithCustomTypeData, + BaseReferences<_$TodoDb, $WithCustomTypeTable, WithCustomTypeData>, + ), + WithCustomTypeData, + PrefetchHooks Function() + > { + $$WithCustomTypeTableTableManager(_$TodoDb db, $WithCustomTypeTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$WithCustomTypeTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$WithCustomTypeTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$WithCustomTypeTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value rowid = const Value.absent(), + }) => WithCustomTypeCompanion(id: id, rowid: rowid), + createCompanionCallback: + ({ + required UuidValue id, + Value rowid = const Value.absent(), + }) => WithCustomTypeCompanion.insert(id: id, rowid: rowid), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$WithCustomTypeTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $WithCustomTypeTable, + WithCustomTypeData, + $$WithCustomTypeTableFilterComposer, + $$WithCustomTypeTableOrderingComposer, + $$WithCustomTypeTableAnnotationComposer, + $$WithCustomTypeTableCreateCompanionBuilder, + $$WithCustomTypeTableUpdateCompanionBuilder, + ( + WithCustomTypeData, + BaseReferences<_$TodoDb, $WithCustomTypeTable, WithCustomTypeData>, + ), + WithCustomTypeData, + PrefetchHooks Function() + >; +typedef $$TableWithEveryColumnTypeTableCreateCompanionBuilder = + TableWithEveryColumnTypeCompanion Function({ + Value id, + Value aBool, + Value aDateTime, + Value aText, + Value anInt, + Value anInt64, + Value aReal, + Value aBlob, + Value anIntEnum, + Value aTextWithConverter, + Value aUuid, + }); +typedef $$TableWithEveryColumnTypeTableUpdateCompanionBuilder = + TableWithEveryColumnTypeCompanion Function({ + Value id, + Value aBool, + Value aDateTime, + Value aText, + Value anInt, + Value anInt64, + Value aReal, + Value aBlob, + Value anIntEnum, + Value aTextWithConverter, + Value aUuid, + }); + +class $$TableWithEveryColumnTypeTableFilterComposer + extends Composer<_$TodoDb, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get aBool => $composableBuilder( + column: $table.aBool, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aDateTime => $composableBuilder( + column: $table.aDateTime, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aText => $composableBuilder( + column: $table.aText, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get anInt => $composableBuilder( + column: $table.anInt, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get anInt64 => $composableBuilder( + column: $table.anInt64, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aReal => $composableBuilder( + column: $table.aReal, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get aBlob => $composableBuilder( + column: $table.aBlob, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get anIntEnum => + $composableBuilder( + column: $table.anIntEnum, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnWithTypeConverterFilters + get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get aUuid => $composableBuilder( + column: $table.aUuid, + builder: (column) => ColumnFilters(column), + ); +} + +class $$TableWithEveryColumnTypeTableOrderingComposer + extends Composer<_$TodoDb, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aBool => $composableBuilder( + column: $table.aBool, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aDateTime => $composableBuilder( + column: $table.aDateTime, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aText => $composableBuilder( + column: $table.aText, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anInt => $composableBuilder( + column: $table.anInt, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anInt64 => $composableBuilder( + column: $table.anInt64, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aReal => $composableBuilder( + column: $table.aReal, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aBlob => $composableBuilder( + column: $table.aBlob, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get anIntEnum => $composableBuilder( + column: $table.anIntEnum, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get aUuid => $composableBuilder( + column: $table.aUuid, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$TableWithEveryColumnTypeTableAnnotationComposer + extends Composer<_$TodoDb, $TableWithEveryColumnTypeTable> { + $$TableWithEveryColumnTypeTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get aBool => + $composableBuilder(column: $table.aBool, builder: (column) => column); + + GeneratedColumn get aDateTime => + $composableBuilder(column: $table.aDateTime, builder: (column) => column); + + GeneratedColumn get aText => + $composableBuilder(column: $table.aText, builder: (column) => column); + + GeneratedColumn get anInt => + $composableBuilder(column: $table.anInt, builder: (column) => column); + + GeneratedColumn get anInt64 => + $composableBuilder(column: $table.anInt64, builder: (column) => column); + + GeneratedColumn get aReal => + $composableBuilder(column: $table.aReal, builder: (column) => column); + + GeneratedColumn get aBlob => + $composableBuilder(column: $table.aBlob, builder: (column) => column); + + GeneratedColumnWithTypeConverter get anIntEnum => + $composableBuilder(column: $table.anIntEnum, builder: (column) => column); + + GeneratedColumnWithTypeConverter + get aTextWithConverter => $composableBuilder( + column: $table.aTextWithConverter, + builder: (column) => column, + ); + + GeneratedColumn get aUuid => + $composableBuilder(column: $table.aUuid, builder: (column) => column); +} + +class $$TableWithEveryColumnTypeTableTableManager + extends + RootTableManager< + _$TodoDb, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData, + $$TableWithEveryColumnTypeTableFilterComposer, + $$TableWithEveryColumnTypeTableOrderingComposer, + $$TableWithEveryColumnTypeTableAnnotationComposer, + $$TableWithEveryColumnTypeTableCreateCompanionBuilder, + $$TableWithEveryColumnTypeTableUpdateCompanionBuilder, + ( + TableWithEveryColumnTypeData, + BaseReferences< + _$TodoDb, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + >, + ), + TableWithEveryColumnTypeData, + PrefetchHooks Function() + > { + $$TableWithEveryColumnTypeTableTableManager( + _$TodoDb db, + $TableWithEveryColumnTypeTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TableWithEveryColumnTypeTableFilterComposer( + $db: db, + $table: table, + ), + createOrderingComposer: () => + $$TableWithEveryColumnTypeTableOrderingComposer( + $db: db, + $table: table, + ), + createComputedFieldComposer: () => + $$TableWithEveryColumnTypeTableAnnotationComposer( + $db: db, + $table: table, + ), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = + const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeCompanion( + id: id, + aBool: aBool, + aDateTime: aDateTime, + aText: aText, + anInt: anInt, + anInt64: anInt64, + aReal: aReal, + aBlob: aBlob, + anIntEnum: anIntEnum, + aTextWithConverter: aTextWithConverter, + aUuid: aUuid, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value aBool = const Value.absent(), + Value aDateTime = const Value.absent(), + Value aText = const Value.absent(), + Value anInt = const Value.absent(), + Value anInt64 = const Value.absent(), + Value aReal = const Value.absent(), + Value aBlob = const Value.absent(), + Value anIntEnum = const Value.absent(), + Value aTextWithConverter = + const Value.absent(), + Value aUuid = const Value.absent(), + }) => TableWithEveryColumnTypeCompanion.insert( + id: id, + aBool: aBool, + aDateTime: aDateTime, + aText: aText, + anInt: anInt, + anInt64: anInt64, + aReal: aReal, + aBlob: aBlob, + anIntEnum: anIntEnum, + aTextWithConverter: aTextWithConverter, + aUuid: aUuid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$TableWithEveryColumnTypeTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData, + $$TableWithEveryColumnTypeTableFilterComposer, + $$TableWithEveryColumnTypeTableOrderingComposer, + $$TableWithEveryColumnTypeTableAnnotationComposer, + $$TableWithEveryColumnTypeTableCreateCompanionBuilder, + $$TableWithEveryColumnTypeTableUpdateCompanionBuilder, + ( + TableWithEveryColumnTypeData, + BaseReferences< + _$TodoDb, + $TableWithEveryColumnTypeTable, + TableWithEveryColumnTypeData + >, + ), + TableWithEveryColumnTypeData, + PrefetchHooks Function() + >; +typedef $$DepartmentTableCreateCompanionBuilder = + DepartmentCompanion Function({Value id, Value name}); +typedef $$DepartmentTableUpdateCompanionBuilder = + DepartmentCompanion Function({Value id, Value name}); + +final class $$DepartmentTableReferences + extends BaseReferences<_$TodoDb, $DepartmentTable, DepartmentData> { + $$DepartmentTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static MultiTypedResultKey<$ProductTable, List> + _productRefsTable(_$TodoDb db) => MultiTypedResultKey.fromTable( + db.product, + aliasName: $_aliasNameGenerator(db.department.id, db.product.department), + ); + + $$ProductTableProcessedTableManager get productRefs { + final manager = $$ProductTableTableManager( + $_db, + $_db.product, + ).filter((f) => f.department.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_productRefsTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache), + ); + } +} + +class $$DepartmentTableFilterComposer + extends Composer<_$TodoDb, $DepartmentTable> { + $$DepartmentTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + Expression productRefs( + Expression Function($$ProductTableFilterComposer f) f, + ) { + final $$ProductTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.product, + getReferencedColumn: (t) => t.department, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ProductTableFilterComposer( + $db: $db, + $table: $db.product, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$DepartmentTableOrderingComposer + extends Composer<_$TodoDb, $DepartmentTable> { + $$DepartmentTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$DepartmentTableAnnotationComposer + extends Composer<_$TodoDb, $DepartmentTable> { + $$DepartmentTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + Expression productRefs( + Expression Function($$ProductTableAnnotationComposer a) f, + ) { + final $$ProductTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.product, + getReferencedColumn: (t) => t.department, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ProductTableAnnotationComposer( + $db: $db, + $table: $db.product, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$DepartmentTableTableManager + extends + RootTableManager< + _$TodoDb, + $DepartmentTable, + DepartmentData, + $$DepartmentTableFilterComposer, + $$DepartmentTableOrderingComposer, + $$DepartmentTableAnnotationComposer, + $$DepartmentTableCreateCompanionBuilder, + $$DepartmentTableUpdateCompanionBuilder, + (DepartmentData, $$DepartmentTableReferences), + DepartmentData, + PrefetchHooks Function({bool productRefs}) + > { + $$DepartmentTableTableManager(_$TodoDb db, $DepartmentTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$DepartmentTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$DepartmentTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$DepartmentTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + }) => DepartmentCompanion(id: id, name: name), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + }) => DepartmentCompanion.insert(id: id, name: name), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$DepartmentTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({productRefs = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [if (productRefs) db.product], + addJoins: null, + getPrefetchedDataCallback: (items) async { + return [ + if (productRefs) + await $_getPrefetchedData< + DepartmentData, + $DepartmentTable, + ProductData + >( + currentTable: table, + referencedTable: $$DepartmentTableReferences + ._productRefsTable(db), + managerFromTypedResult: (p0) => + $$DepartmentTableReferences( + db, + table, + p0, + ).productRefs, + referencedItemsForCurrentItem: (item, referencedItems) => + referencedItems.where((e) => e.department == item.id), + typedResults: items, + ), + ]; + }, + ); + }, + ), + ); +} + +typedef $$DepartmentTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $DepartmentTable, + DepartmentData, + $$DepartmentTableFilterComposer, + $$DepartmentTableOrderingComposer, + $$DepartmentTableAnnotationComposer, + $$DepartmentTableCreateCompanionBuilder, + $$DepartmentTableUpdateCompanionBuilder, + (DepartmentData, $$DepartmentTableReferences), + DepartmentData, + PrefetchHooks Function({bool productRefs}) + >; +typedef $$ProductTableCreateCompanionBuilder = + ProductCompanion Function({ + required String sku, + Value name, + Value department, + Value rowid, + }); +typedef $$ProductTableUpdateCompanionBuilder = + ProductCompanion Function({ + Value sku, + Value name, + Value department, + Value rowid, + }); + +final class $$ProductTableReferences + extends BaseReferences<_$TodoDb, $ProductTable, ProductData> { + $$ProductTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static $DepartmentTable _departmentTable(_$TodoDb db) => + db.department.createAlias( + $_aliasNameGenerator(db.product.department, db.department.id), + ); + + $$DepartmentTableProcessedTableManager? get department { + final $_column = $_itemColumn('department'); + if ($_column == null) return null; + final manager = $$DepartmentTableTableManager( + $_db, + $_db.department, + ).filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_departmentTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item]), + ); + } + + static MultiTypedResultKey<$ListingTable, List> _listingsTable( + _$TodoDb db, + ) => MultiTypedResultKey.fromTable( + db.listing, + aliasName: $_aliasNameGenerator(db.product.sku, db.listing.product), + ); + + $$ListingTableProcessedTableManager get listings { + final manager = $$ListingTableTableManager( + $_db, + $_db.listing, + ).filter((f) => f.product.sku.sqlEquals($_itemColumn('sku')!)); + + final cache = $_typedResult.readTableOrNull(_listingsTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache), + ); + } +} + +class $$ProductTableFilterComposer extends Composer<_$TodoDb, $ProductTable> { + $$ProductTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get sku => $composableBuilder( + column: $table.sku, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + $$DepartmentTableFilterComposer get department { + final $$DepartmentTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.department, + referencedTable: $db.department, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$DepartmentTableFilterComposer( + $db: $db, + $table: $db.department, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } + + Expression listings( + Expression Function($$ListingTableFilterComposer f) f, + ) { + final $$ListingTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.sku, + referencedTable: $db.listing, + getReferencedColumn: (t) => t.product, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ListingTableFilterComposer( + $db: $db, + $table: $db.listing, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$ProductTableOrderingComposer extends Composer<_$TodoDb, $ProductTable> { + $$ProductTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get sku => $composableBuilder( + column: $table.sku, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); + + $$DepartmentTableOrderingComposer get department { + final $$DepartmentTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.department, + referencedTable: $db.department, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$DepartmentTableOrderingComposer( + $db: $db, + $table: $db.department, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$ProductTableAnnotationComposer + extends Composer<_$TodoDb, $ProductTable> { + $$ProductTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get sku => + $composableBuilder(column: $table.sku, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + $$DepartmentTableAnnotationComposer get department { + final $$DepartmentTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.department, + referencedTable: $db.department, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$DepartmentTableAnnotationComposer( + $db: $db, + $table: $db.department, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } + + Expression listings( + Expression Function($$ListingTableAnnotationComposer a) f, + ) { + final $$ListingTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.sku, + referencedTable: $db.listing, + getReferencedColumn: (t) => t.product, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ListingTableAnnotationComposer( + $db: $db, + $table: $db.listing, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$ProductTableTableManager + extends + RootTableManager< + _$TodoDb, + $ProductTable, + ProductData, + $$ProductTableFilterComposer, + $$ProductTableOrderingComposer, + $$ProductTableAnnotationComposer, + $$ProductTableCreateCompanionBuilder, + $$ProductTableUpdateCompanionBuilder, + (ProductData, $$ProductTableReferences), + ProductData, + PrefetchHooks Function({bool department, bool listings}) + > { + $$ProductTableTableManager(_$TodoDb db, $ProductTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$ProductTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$ProductTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$ProductTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value sku = const Value.absent(), + Value name = const Value.absent(), + Value department = const Value.absent(), + Value rowid = const Value.absent(), + }) => ProductCompanion( + sku: sku, + name: name, + department: department, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String sku, + Value name = const Value.absent(), + Value department = const Value.absent(), + Value rowid = const Value.absent(), + }) => ProductCompanion.insert( + sku: sku, + name: name, + department: department, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$ProductTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({department = false, listings = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [if (listings) db.listing], + addJoins: + < + T extends TableManagerState< + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic + > + >(state) { + if (department) { + state = + state.withJoin( + currentTable: table, + currentColumn: table.department, + referencedTable: $$ProductTableReferences + ._departmentTable(db), + referencedColumn: $$ProductTableReferences + ._departmentTable(db) + .id, + ) + as T; + } + + return state; + }, + getPrefetchedDataCallback: (items) async { + return [ + if (listings) + await $_getPrefetchedData< + ProductData, + $ProductTable, + ListingData + >( + currentTable: table, + referencedTable: $$ProductTableReferences._listingsTable( + db, + ), + managerFromTypedResult: (p0) => + $$ProductTableReferences(db, table, p0).listings, + referencedItemsForCurrentItem: (item, referencedItems) => + referencedItems.where((e) => e.product == item.sku), + typedResults: items, + ), + ]; + }, + ); + }, + ), + ); +} + +typedef $$ProductTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $ProductTable, + ProductData, + $$ProductTableFilterComposer, + $$ProductTableOrderingComposer, + $$ProductTableAnnotationComposer, + $$ProductTableCreateCompanionBuilder, + $$ProductTableUpdateCompanionBuilder, + (ProductData, $$ProductTableReferences), + ProductData, + PrefetchHooks Function({bool department, bool listings}) + >; +typedef $$StoreTableCreateCompanionBuilder = + StoreCompanion Function({Value id, Value name}); +typedef $$StoreTableUpdateCompanionBuilder = + StoreCompanion Function({Value id, Value name}); + +final class $$StoreTableReferences + extends BaseReferences<_$TodoDb, $StoreTable, StoreData> { + $$StoreTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static MultiTypedResultKey<$ListingTable, List> _listingsTable( + _$TodoDb db, + ) => MultiTypedResultKey.fromTable( + db.listing, + aliasName: $_aliasNameGenerator(db.store.id, db.listing.store), + ); + + $$ListingTableProcessedTableManager get listings { + final manager = $$ListingTableTableManager( + $_db, + $_db.listing, + ).filter((f) => f.store.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_listingsTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache), + ); + } +} + +class $$StoreTableFilterComposer extends Composer<_$TodoDb, $StoreTable> { + $$StoreTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + Expression listings( + Expression Function($$ListingTableFilterComposer f) f, + ) { + final $$ListingTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.listing, + getReferencedColumn: (t) => t.store, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ListingTableFilterComposer( + $db: $db, + $table: $db.listing, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$StoreTableOrderingComposer extends Composer<_$TodoDb, $StoreTable> { + $$StoreTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$StoreTableAnnotationComposer extends Composer<_$TodoDb, $StoreTable> { + $$StoreTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + Expression listings( + Expression Function($$ListingTableAnnotationComposer a) f, + ) { + final $$ListingTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.listing, + getReferencedColumn: (t) => t.store, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ListingTableAnnotationComposer( + $db: $db, + $table: $db.listing, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$StoreTableTableManager + extends + RootTableManager< + _$TodoDb, + $StoreTable, + StoreData, + $$StoreTableFilterComposer, + $$StoreTableOrderingComposer, + $$StoreTableAnnotationComposer, + $$StoreTableCreateCompanionBuilder, + $$StoreTableUpdateCompanionBuilder, + (StoreData, $$StoreTableReferences), + StoreData, + PrefetchHooks Function({bool listings}) + > { + $$StoreTableTableManager(_$TodoDb db, $StoreTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$StoreTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$StoreTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$StoreTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + }) => StoreCompanion(id: id, name: name), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + }) => StoreCompanion.insert(id: id, name: name), + withReferenceMapper: (p0) => p0 + .map( + (e) => + (e.readTable(table), $$StoreTableReferences(db, table, e)), + ) + .toList(), + prefetchHooksCallback: ({listings = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [if (listings) db.listing], + addJoins: null, + getPrefetchedDataCallback: (items) async { + return [ + if (listings) + await $_getPrefetchedData< + StoreData, + $StoreTable, + ListingData + >( + currentTable: table, + referencedTable: $$StoreTableReferences._listingsTable( + db, + ), + managerFromTypedResult: (p0) => + $$StoreTableReferences(db, table, p0).listings, + referencedItemsForCurrentItem: (item, referencedItems) => + referencedItems.where((e) => e.store == item.id), + typedResults: items, + ), + ]; + }, + ); + }, + ), + ); +} + +typedef $$StoreTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $StoreTable, + StoreData, + $$StoreTableFilterComposer, + $$StoreTableOrderingComposer, + $$StoreTableAnnotationComposer, + $$StoreTableCreateCompanionBuilder, + $$StoreTableUpdateCompanionBuilder, + (StoreData, $$StoreTableReferences), + StoreData, + PrefetchHooks Function({bool listings}) + >; +typedef $$ListingTableCreateCompanionBuilder = + ListingCompanion Function({ + Value id, + required String product, + Value store, + Value price, + }); +typedef $$ListingTableUpdateCompanionBuilder = + ListingCompanion Function({ + Value id, + Value product, + Value store, + Value price, + }); + +final class $$ListingTableReferences + extends BaseReferences<_$TodoDb, $ListingTable, ListingData> { + $$ListingTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static $ProductTable _productTable(_$TodoDb db) => db.product.createAlias( + $_aliasNameGenerator(db.listing.product, db.product.sku), + ); + + $$ProductTableProcessedTableManager get product { + final $_column = $_itemColumn('product')!; + + final manager = $$ProductTableTableManager( + $_db, + $_db.product, + ).filter((f) => f.sku.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_productTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item]), + ); + } + + static $StoreTable _storeTable(_$TodoDb db) => + db.store.createAlias($_aliasNameGenerator(db.listing.store, db.store.id)); + + $$StoreTableProcessedTableManager? get store { + final $_column = $_itemColumn('store'); + if ($_column == null) return null; + final manager = $$StoreTableTableManager( + $_db, + $_db.store, + ).filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_storeTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item]), + ); + } +} + +class $$ListingTableFilterComposer extends Composer<_$TodoDb, $ListingTable> { + $$ListingTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get price => $composableBuilder( + column: $table.price, + builder: (column) => ColumnFilters(column), + ); + + $$ProductTableFilterComposer get product { + final $$ProductTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.product, + referencedTable: $db.product, + getReferencedColumn: (t) => t.sku, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ProductTableFilterComposer( + $db: $db, + $table: $db.product, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } + + $$StoreTableFilterComposer get store { + final $$StoreTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.store, + referencedTable: $db.store, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$StoreTableFilterComposer( + $db: $db, + $table: $db.store, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$ListingTableOrderingComposer extends Composer<_$TodoDb, $ListingTable> { + $$ListingTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get price => $composableBuilder( + column: $table.price, + builder: (column) => ColumnOrderings(column), + ); + + $$ProductTableOrderingComposer get product { + final $$ProductTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.product, + referencedTable: $db.product, + getReferencedColumn: (t) => t.sku, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ProductTableOrderingComposer( + $db: $db, + $table: $db.product, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } + + $$StoreTableOrderingComposer get store { + final $$StoreTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.store, + referencedTable: $db.store, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$StoreTableOrderingComposer( + $db: $db, + $table: $db.store, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$ListingTableAnnotationComposer + extends Composer<_$TodoDb, $ListingTable> { + $$ListingTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get price => + $composableBuilder(column: $table.price, builder: (column) => column); + + $$ProductTableAnnotationComposer get product { + final $$ProductTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.product, + referencedTable: $db.product, + getReferencedColumn: (t) => t.sku, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$ProductTableAnnotationComposer( + $db: $db, + $table: $db.product, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } + + $$StoreTableAnnotationComposer get store { + final $$StoreTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.store, + referencedTable: $db.store, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$StoreTableAnnotationComposer( + $db: $db, + $table: $db.store, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$ListingTableTableManager + extends + RootTableManager< + _$TodoDb, + $ListingTable, + ListingData, + $$ListingTableFilterComposer, + $$ListingTableOrderingComposer, + $$ListingTableAnnotationComposer, + $$ListingTableCreateCompanionBuilder, + $$ListingTableUpdateCompanionBuilder, + (ListingData, $$ListingTableReferences), + ListingData, + PrefetchHooks Function({bool product, bool store}) + > { + $$ListingTableTableManager(_$TodoDb db, $ListingTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$ListingTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$ListingTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$ListingTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value product = const Value.absent(), + Value store = const Value.absent(), + Value price = const Value.absent(), + }) => ListingCompanion( + id: id, + product: product, + store: store, + price: price, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String product, + Value store = const Value.absent(), + Value price = const Value.absent(), + }) => ListingCompanion.insert( + id: id, + product: product, + store: store, + price: price, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$ListingTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({product = false, store = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [], + addJoins: + < + T extends TableManagerState< + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic + > + >(state) { + if (product) { + state = + state.withJoin( + currentTable: table, + currentColumn: table.product, + referencedTable: $$ListingTableReferences + ._productTable(db), + referencedColumn: $$ListingTableReferences + ._productTable(db) + .sku, + ) + as T; + } + if (store) { + state = + state.withJoin( + currentTable: table, + currentColumn: table.store, + referencedTable: $$ListingTableReferences + ._storeTable(db), + referencedColumn: $$ListingTableReferences + ._storeTable(db) + .id, + ) + as T; + } + + return state; + }, + getPrefetchedDataCallback: (items) async { + return []; + }, + ); + }, + ), + ); +} + +typedef $$ListingTableProcessedTableManager = + ProcessedTableManager< + _$TodoDb, + $ListingTable, + ListingData, + $$ListingTableFilterComposer, + $$ListingTableOrderingComposer, + $$ListingTableAnnotationComposer, + $$ListingTableCreateCompanionBuilder, + $$ListingTableUpdateCompanionBuilder, + (ListingData, $$ListingTableReferences), + ListingData, + PrefetchHooks Function({bool product, bool store}) + >; + +class $TodoDbManager { + final _$TodoDb _db; + $TodoDbManager(this._db); + $$CategoriesTableTableManager get categories => + $$CategoriesTableTableManager(_db, _db.categories); + $$TodosTableTableTableManager get todosTable => + $$TodosTableTableTableManager(_db, _db.todosTable); + $$UsersTableTableManager get users => + $$UsersTableTableManager(_db, _db.users); + $$SharedTodosTableTableManager get sharedTodos => + $$SharedTodosTableTableManager(_db, _db.sharedTodos); + $$TableWithoutPKTableTableManager get tableWithoutPK => + $$TableWithoutPKTableTableManager(_db, _db.tableWithoutPK); + $$PureDefaultsTableTableManager get pureDefaults => + $$PureDefaultsTableTableManager(_db, _db.pureDefaults); + $$WithCustomTypeTableTableManager get withCustomType => + $$WithCustomTypeTableTableManager(_db, _db.withCustomType); + $$TableWithEveryColumnTypeTableTableManager get tableWithEveryColumnType => + $$TableWithEveryColumnTypeTableTableManager( + _db, + _db.tableWithEveryColumnType, + ); + $$DepartmentTableTableManager get department => + $$DepartmentTableTableManager(_db, _db.department); + $$ProductTableTableManager get product => + $$ProductTableTableManager(_db, _db.product); + $$StoreTableTableManager get store => + $$StoreTableTableManager(_db, _db.store); + $$ListingTableTableManager get listing => + $$ListingTableTableManager(_db, _db.listing); +} + +class AllTodosWithCategoryResult { + final RowId id; + final String? title; + final String content; + final DateTime? targetDate; + final RowId? category; + final TodoStatus? status; + final RowId catId; + final String catDesc; + AllTodosWithCategoryResult({ + required this.id, + this.title, + required this.content, + this.targetDate, + this.category, + this.status, + required this.catId, + required this.catDesc, + }); +} + +mixin _$SomeDaoMixin on DatabaseAccessor { + $UsersTable get users => attachedDatabase.users; + $CategoriesTable get categories => attachedDatabase.categories; + $TodosTableTable get todosTable => attachedDatabase.todosTable; + $SharedTodosTable get sharedTodos => attachedDatabase.sharedTodos; + $TodoWithCategoryViewView get todoWithCategoryView => + attachedDatabase.todoWithCategoryView; + Selectable todosForUser(RowId user) { + return customSelect( + switch (executor.dialect) { + SqlDialect.sqlite => + 'SELECT t.* FROM todos AS t INNER JOIN shared_todos AS st ON st.todo = t.id INNER JOIN users AS u ON u.id = st.user WHERE u.id = ?1', + SqlDialect.postgres || _ => + 'SELECT t.* FROM todos AS t INNER JOIN shared_todos AS st ON st.todo = t.id INNER JOIN users AS u ON u.id = st."user" WHERE u.id = \$1', + }, + variables: [Variable($UsersTable.$converterid.toSql(user))], + readsFrom: {todosTable, sharedTodos, users}, + ).asyncMap(todosTable.mapFromRow); + } +} diff --git a/test/utils/executor.dart b/legacy/drift_offline_sync/test/utils/executor.dart similarity index 100% rename from test/utils/executor.dart rename to legacy/drift_offline_sync/test/utils/executor.dart diff --git a/test/utils/migration.dart b/legacy/drift_offline_sync/test/utils/migration.dart similarity index 100% rename from test/utils/migration.dart rename to legacy/drift_offline_sync/test/utils/migration.dart diff --git a/legacy/drift_offline_sync/test/utils/migration.g.dart b/legacy/drift_offline_sync/test/utils/migration.g.dart new file mode 100644 index 0000000..b35123a --- /dev/null +++ b/legacy/drift_offline_sync/test/utils/migration.g.dart @@ -0,0 +1,1972 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'migration.dart'; + +// ignore_for_file: type=lint +class $CategoriesTable extends Categories + with TableInfo<$CategoriesTable, Category> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CategoriesTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($CategoriesTable.$converterid); + static const VerificationMeta _descriptionMeta = const VerificationMeta( + 'description', + ); + @override + late final GeneratedColumn description = GeneratedColumn( + 'desc', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + $customConstraints: 'NOT NULL UNIQUE', + ); + @override + late final GeneratedColumnWithTypeConverter priority = + GeneratedColumn( + 'priority', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultValue: const Constant(0), + ).withConverter($CategoriesTable.$converterpriority); + static const VerificationMeta _descriptionInUpperCaseMeta = + const VerificationMeta('descriptionInUpperCase'); + @override + late final GeneratedColumn descriptionInUpperCase = + GeneratedColumn( + 'description_in_upper_case', + aliasedName, + false, + generatedAs: GeneratedAs( + StringExpressionOperators(description).upper(), + false, + ), + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + @override + List get $columns => [ + id, + description, + priority, + descriptionInUpperCase, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'categories'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('desc')) { + context.handle( + _descriptionMeta, + description.isAcceptableOrUnknown(data['desc']!, _descriptionMeta), + ); + } else if (isInserting) { + context.missing(_descriptionMeta); + } + if (data.containsKey('description_in_upper_case')) { + context.handle( + _descriptionInUpperCaseMeta, + descriptionInUpperCase.isAcceptableOrUnknown( + data['description_in_upper_case']!, + _descriptionInUpperCaseMeta, + ), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + Category map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return Category( + id: $CategoriesTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + description: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}desc'], + )!, + priority: $CategoriesTable.$converterpriority.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}priority'], + )!, + ), + descriptionInUpperCase: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}description_in_upper_case'], + )!, + ); + } + + @override + $CategoriesTable createAlias(String alias) { + return $CategoriesTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $converterpriority = + const EnumIndexConverter(CategoryPriority.values); +} + +class Category extends DataClass implements Insertable { + final RowId id; + final String description; + final CategoryPriority priority; + final String descriptionInUpperCase; + const Category({ + required this.id, + required this.description, + required this.priority, + required this.descriptionInUpperCase, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($CategoriesTable.$converterid.toSql(id)); + } + map['desc'] = Variable(description); + { + map['priority'] = Variable( + $CategoriesTable.$converterpriority.toSql(priority), + ); + } + return map; + } + + CategoriesCompanion toCompanion(bool nullToAbsent) { + return CategoriesCompanion( + id: Value(id), + description: Value(description), + priority: Value(priority), + ); + } + + factory Category.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return Category( + id: $CategoriesTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + description: serializer.fromJson(json['desc']), + priority: $CategoriesTable.$converterpriority.fromJson( + serializer.fromJson(json['priority']), + ), + descriptionInUpperCase: serializer.fromJson( + json['description_in_upper_case'], + ), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($CategoriesTable.$converterid.toJson(id)), + 'desc': serializer.toJson(description), + 'priority': serializer.toJson( + $CategoriesTable.$converterpriority.toJson(priority), + ), + 'description_in_upper_case': serializer.toJson( + descriptionInUpperCase, + ), + }; + } + + Category copyWith({ + RowId? id, + String? description, + CategoryPriority? priority, + String? descriptionInUpperCase, + }) => Category( + id: id ?? this.id, + description: description ?? this.description, + priority: priority ?? this.priority, + descriptionInUpperCase: + descriptionInUpperCase ?? this.descriptionInUpperCase, + ); + @override + String toString() { + return (StringBuffer('Category(') + ..write('id: $id, ') + ..write('description: $description, ') + ..write('priority: $priority, ') + ..write('descriptionInUpperCase: $descriptionInUpperCase') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, description, priority, descriptionInUpperCase); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is Category && + other.id == this.id && + other.description == this.description && + other.priority == this.priority && + other.descriptionInUpperCase == this.descriptionInUpperCase); +} + +class CategoriesCompanion extends UpdateCompanion { + final Value id; + final Value description; + final Value priority; + const CategoriesCompanion({ + this.id = const Value.absent(), + this.description = const Value.absent(), + this.priority = const Value.absent(), + }); + CategoriesCompanion.insert({ + this.id = const Value.absent(), + required String description, + this.priority = const Value.absent(), + }) : description = Value(description); + static Insertable custom({ + Expression? id, + Expression? description, + Expression? priority, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (description != null) 'desc': description, + if (priority != null) 'priority': priority, + }); + } + + CategoriesCompanion copyWith({ + Value? id, + Value? description, + Value? priority, + }) { + return CategoriesCompanion( + id: id ?? this.id, + description: description ?? this.description, + priority: priority ?? this.priority, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($CategoriesTable.$converterid.toSql(id.value)); + } + if (description.present) { + map['desc'] = Variable(description.value); + } + if (priority.present) { + map['priority'] = Variable( + $CategoriesTable.$converterpriority.toSql(priority.value), + ); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CategoriesCompanion(') + ..write('id: $id, ') + ..write('description: $description, ') + ..write('priority: $priority') + ..write(')')) + .toString(); + } +} + +class $TodosTableTable extends TodosTable + with TableInfo<$TodosTableTable, TodoEntry> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TodosTableTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($TodosTableTable.$converterid); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', + aliasedName, + true, + additionalChecks: GeneratedColumn.checkTextLength( + minTextLength: 4, + maxTextLength: 16, + ), + type: DriftSqlType.string, + requiredDuringInsert: false, + ); + static const VerificationMeta _contentMeta = const VerificationMeta( + 'content', + ); + @override + late final GeneratedColumn content = GeneratedColumn( + 'content', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _targetDateMeta = const VerificationMeta( + 'targetDate', + ); + @override + late final GeneratedColumn targetDate = GeneratedColumn( + 'target_date', + aliasedName, + true, + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways('UNIQUE'), + ); + @override + late final GeneratedColumnWithTypeConverter category = + GeneratedColumn( + 'category', + aliasedName, + true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES categories (id) DEFERRABLE INITIALLY DEFERRED', + ), + ).withConverter($TodosTableTable.$convertercategoryn); + @override + late final GeneratedColumnWithTypeConverter status = + GeneratedColumn( + 'status', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + ).withConverter($TodosTableTable.$converterstatusn); + @override + List get $columns => [ + id, + title, + content, + targetDate, + category, + status, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'todos'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('title')) { + context.handle( + _titleMeta, + title.isAcceptableOrUnknown(data['title']!, _titleMeta), + ); + } + if (data.containsKey('content')) { + context.handle( + _contentMeta, + content.isAcceptableOrUnknown(data['content']!, _contentMeta), + ); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('target_date')) { + context.handle( + _targetDateMeta, + targetDate.isAcceptableOrUnknown(data['target_date']!, _targetDateMeta), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + List> get uniqueKeys => [ + {title, category}, + {title, targetDate}, + ]; + @override + TodoEntry map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoEntry( + id: $TodosTableTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + title: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}title'], + ), + content: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}content'], + )!, + targetDate: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}target_date'], + ), + category: $TodosTableTable.$convertercategoryn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}category'], + ), + ), + status: $TodosTableTable.$converterstatusn.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}status'], + ), + ), + ); + } + + @override + $TodosTableTable createAlias(String alias) { + return $TodosTableTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); + static JsonTypeConverter2 $convertercategory = + TypeConverter.extensionType(); + static JsonTypeConverter2 $convertercategoryn = + JsonTypeConverter2.asNullable($convertercategory); + static JsonTypeConverter2 $converterstatus = + const EnumNameConverter(TodoStatus.values); + static JsonTypeConverter2 $converterstatusn = + JsonTypeConverter2.asNullable($converterstatus); +} + +class TodoEntry extends DataClass implements Insertable { + final RowId id; + final String? title; + final String content; + final DateTime? targetDate; + final RowId? category; + final TodoStatus? status; + const TodoEntry({ + required this.id, + this.title, + required this.content, + this.targetDate, + this.category, + this.status, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($TodosTableTable.$converterid.toSql(id)); + } + if (!nullToAbsent || title != null) { + map['title'] = Variable(title); + } + map['content'] = Variable(content); + if (!nullToAbsent || targetDate != null) { + map['target_date'] = Variable(targetDate); + } + if (!nullToAbsent || category != null) { + map['category'] = Variable( + $TodosTableTable.$convertercategoryn.toSql(category), + ); + } + if (!nullToAbsent || status != null) { + map['status'] = Variable( + $TodosTableTable.$converterstatusn.toSql(status), + ); + } + return map; + } + + TodosTableCompanion toCompanion(bool nullToAbsent) { + return TodosTableCompanion( + id: Value(id), + title: title == null && nullToAbsent + ? const Value.absent() + : Value(title), + content: Value(content), + targetDate: targetDate == null && nullToAbsent + ? const Value.absent() + : Value(targetDate), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + status: status == null && nullToAbsent + ? const Value.absent() + : Value(status), + ); + } + + factory TodoEntry.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoEntry( + id: $TodosTableTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + targetDate: serializer.fromJson(json['target_date']), + category: $TodosTableTable.$convertercategoryn.fromJson( + serializer.fromJson(json['category']), + ), + status: $TodosTableTable.$converterstatusn.fromJson( + serializer.fromJson(json['status']), + ), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($TodosTableTable.$converterid.toJson(id)), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'target_date': serializer.toJson(targetDate), + 'category': serializer.toJson( + $TodosTableTable.$convertercategoryn.toJson(category), + ), + 'status': serializer.toJson( + $TodosTableTable.$converterstatusn.toJson(status), + ), + }; + } + + TodoEntry copyWith({ + RowId? id, + Value title = const Value.absent(), + String? content, + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodoEntry( + id: id ?? this.id, + title: title.present ? title.value : this.title, + content: content ?? this.content, + targetDate: targetDate.present ? targetDate.value : this.targetDate, + category: category.present ? category.value : this.category, + status: status.present ? status.value : this.status, + ); + TodoEntry copyWithCompanion(TodosTableCompanion data) { + return TodoEntry( + id: data.id.present ? data.id.value : this.id, + title: data.title.present ? data.title.value : this.title, + content: data.content.present ? data.content.value : this.content, + targetDate: data.targetDate.present + ? data.targetDate.value + : this.targetDate, + category: data.category.present ? data.category.value : this.category, + status: data.status.present ? data.status.value : this.status, + ); + } + + @override + String toString() { + return (StringBuffer('TodoEntry(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('targetDate: $targetDate, ') + ..write('category: $category, ') + ..write('status: $status') + ..write(')')) + .toString(); + } + + @override + int get hashCode => + Object.hash(id, title, content, targetDate, category, status); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoEntry && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.targetDate == this.targetDate && + other.category == this.category && + other.status == this.status); +} + +class TodosTableCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value targetDate; + final Value category; + final Value status; + const TodosTableCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.targetDate = const Value.absent(), + this.category = const Value.absent(), + this.status = const Value.absent(), + }); + TodosTableCompanion.insert({ + this.id = const Value.absent(), + this.title = const Value.absent(), + required String content, + this.targetDate = const Value.absent(), + this.category = const Value.absent(), + this.status = const Value.absent(), + }) : content = Value(content); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? targetDate, + Expression? category, + Expression? status, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'content': content, + if (targetDate != null) 'target_date': targetDate, + if (category != null) 'category': category, + if (status != null) 'status': status, + }); + } + + TodosTableCompanion copyWith({ + Value? id, + Value? title, + Value? content, + Value? targetDate, + Value? category, + Value? status, + }) { + return TodosTableCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + targetDate: targetDate ?? this.targetDate, + category: category ?? this.category, + status: status ?? this.status, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($TodosTableTable.$converterid.toSql(id.value)); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['content'] = Variable(content.value); + } + if (targetDate.present) { + map['target_date'] = Variable(targetDate.value); + } + if (category.present) { + map['category'] = Variable( + $TodosTableTable.$convertercategoryn.toSql(category.value), + ); + } + if (status.present) { + map['status'] = Variable( + $TodosTableTable.$converterstatusn.toSql(status.value), + ); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TodosTableCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('targetDate: $targetDate, ') + ..write('category: $category, ') + ..write('status: $status') + ..write(')')) + .toString(); + } +} + +abstract class _$FirstDb extends GeneratedDatabase { + _$FirstDb(QueryExecutor e) : super(e); + $FirstDbManager get managers => $FirstDbManager(this); + late final $CategoriesTable categories = $CategoriesTable(this); + late final $TodosTableTable todosTable = $TodosTableTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [categories, todosTable]; + @override + DriftDatabaseOptions get options => + const DriftDatabaseOptions(storeDateTimeAsText: true); +} + +typedef $$CategoriesTableCreateCompanionBuilder = + CategoriesCompanion Function({ + Value id, + required String description, + Value priority, + }); +typedef $$CategoriesTableUpdateCompanionBuilder = + CategoriesCompanion Function({ + Value id, + Value description, + Value priority, + }); + +final class $$CategoriesTableReferences + extends BaseReferences<_$FirstDb, $CategoriesTable, Category> { + $$CategoriesTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static MultiTypedResultKey<$TodosTableTable, List> _todosTable( + _$FirstDb db, + ) => MultiTypedResultKey.fromTable( + db.todosTable, + aliasName: $_aliasNameGenerator(db.categories.id, db.todosTable.category), + ); + + $$TodosTableTableProcessedTableManager get todos { + final manager = $$TodosTableTableTableManager( + $_db, + $_db.todosTable, + ).filter((f) => f.category.id.sqlEquals($_itemColumn('id')!)); + + final cache = $_typedResult.readTableOrNull(_todosTable($_db)); + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: cache), + ); + } +} + +class $$CategoriesTableFilterComposer + extends Composer<_$FirstDb, $CategoriesTable> { + $$CategoriesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters + get priority => $composableBuilder( + column: $table.priority, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => ColumnFilters(column), + ); + + Expression todos( + Expression Function($$TodosTableTableFilterComposer f) f, + ) { + final $$TodosTableTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.todosTable, + getReferencedColumn: (t) => t.category, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$TodosTableTableFilterComposer( + $db: $db, + $table: $db.todosTable, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$CategoriesTableOrderingComposer + extends Composer<_$FirstDb, $CategoriesTable> { + $$CategoriesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get description => $composableBuilder( + column: $table.description, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get priority => $composableBuilder( + column: $table.priority, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CategoriesTableAnnotationComposer + extends Composer<_$FirstDb, $CategoriesTable> { + $$CategoriesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get description => $composableBuilder( + column: $table.description, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get priority => + $composableBuilder(column: $table.priority, builder: (column) => column); + + GeneratedColumn get descriptionInUpperCase => $composableBuilder( + column: $table.descriptionInUpperCase, + builder: (column) => column, + ); + + Expression todos( + Expression Function($$TodosTableTableAnnotationComposer a) f, + ) { + final $$TodosTableTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.id, + referencedTable: $db.todosTable, + getReferencedColumn: (t) => t.category, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$TodosTableTableAnnotationComposer( + $db: $db, + $table: $db.todosTable, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return f(composer); + } +} + +class $$CategoriesTableTableManager + extends + RootTableManager< + _$FirstDb, + $CategoriesTable, + Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (Category, $$CategoriesTableReferences), + Category, + PrefetchHooks Function({bool todos}) + > { + $$CategoriesTableTableManager(_$FirstDb db, $CategoriesTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CategoriesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CategoriesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CategoriesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value description = const Value.absent(), + Value priority = const Value.absent(), + }) => CategoriesCompanion( + id: id, + description: description, + priority: priority, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String description, + Value priority = const Value.absent(), + }) => CategoriesCompanion.insert( + id: id, + description: description, + priority: priority, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$CategoriesTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({todos = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [if (todos) db.todosTable], + addJoins: null, + getPrefetchedDataCallback: (items) async { + return [ + if (todos) + await $_getPrefetchedData< + Category, + $CategoriesTable, + TodoEntry + >( + currentTable: table, + referencedTable: $$CategoriesTableReferences._todosTable( + db, + ), + managerFromTypedResult: (p0) => + $$CategoriesTableReferences(db, table, p0).todos, + referencedItemsForCurrentItem: (item, referencedItems) => + referencedItems.where((e) => e.category == item.id), + typedResults: items, + ), + ]; + }, + ); + }, + ), + ); +} + +typedef $$CategoriesTableProcessedTableManager = + ProcessedTableManager< + _$FirstDb, + $CategoriesTable, + Category, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (Category, $$CategoriesTableReferences), + Category, + PrefetchHooks Function({bool todos}) + >; +typedef $$TodosTableTableCreateCompanionBuilder = + TodosTableCompanion Function({ + Value id, + Value title, + required String content, + Value targetDate, + Value category, + Value status, + }); +typedef $$TodosTableTableUpdateCompanionBuilder = + TodosTableCompanion Function({ + Value id, + Value title, + Value content, + Value targetDate, + Value category, + Value status, + }); + +final class $$TodosTableTableReferences + extends BaseReferences<_$FirstDb, $TodosTableTable, TodoEntry> { + $$TodosTableTableReferences(super.$_db, super.$_table, super.$_typedResult); + + static $CategoriesTable _categoryTable(_$FirstDb db) => + db.categories.createAlias( + $_aliasNameGenerator(db.todosTable.category, db.categories.id), + ); + + $$CategoriesTableProcessedTableManager? get category { + final $_column = $_itemColumn('category'); + if ($_column == null) return null; + final manager = $$CategoriesTableTableManager( + $_db, + $_db.categories, + ).filter((f) => f.id.sqlEquals($_column)); + final item = $_typedResult.readTableOrNull(_categoryTable($_db)); + if (item == null) return manager; + return ProcessedTableManager( + manager.$state.copyWith(prefetchedData: [item]), + ); + } +} + +class $$TodosTableTableFilterComposer + extends Composer<_$FirstDb, $TodosTableTable> { + $$TodosTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get content => $composableBuilder( + column: $table.content, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => ColumnFilters(column), + ); + + ColumnWithTypeConverterFilters get status => + $composableBuilder( + column: $table.status, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + $$CategoriesTableFilterComposer get category { + final $$CategoriesTableFilterComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableFilterComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableOrderingComposer + extends Composer<_$FirstDb, $TodosTableTable> { + $$TodosTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get title => $composableBuilder( + column: $table.title, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get content => $composableBuilder( + column: $table.content, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get status => $composableBuilder( + column: $table.status, + builder: (column) => ColumnOrderings(column), + ); + + $$CategoriesTableOrderingComposer get category { + final $$CategoriesTableOrderingComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableOrderingComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableAnnotationComposer + extends Composer<_$FirstDb, $TodosTableTable> { + $$TodosTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get title => + $composableBuilder(column: $table.title, builder: (column) => column); + + GeneratedColumn get content => + $composableBuilder(column: $table.content, builder: (column) => column); + + GeneratedColumn get targetDate => $composableBuilder( + column: $table.targetDate, + builder: (column) => column, + ); + + GeneratedColumnWithTypeConverter get status => + $composableBuilder(column: $table.status, builder: (column) => column); + + $$CategoriesTableAnnotationComposer get category { + final $$CategoriesTableAnnotationComposer composer = $composerBuilder( + composer: this, + getCurrentColumn: (t) => t.category, + referencedTable: $db.categories, + getReferencedColumn: (t) => t.id, + builder: + ( + joinBuilder, { + $addJoinBuilderToRootComposer, + $removeJoinBuilderFromRootComposer, + }) => $$CategoriesTableAnnotationComposer( + $db: $db, + $table: $db.categories, + $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, + joinBuilder: joinBuilder, + $removeJoinBuilderFromRootComposer: + $removeJoinBuilderFromRootComposer, + ), + ); + return composer; + } +} + +class $$TodosTableTableTableManager + extends + RootTableManager< + _$FirstDb, + $TodosTableTable, + TodoEntry, + $$TodosTableTableFilterComposer, + $$TodosTableTableOrderingComposer, + $$TodosTableTableAnnotationComposer, + $$TodosTableTableCreateCompanionBuilder, + $$TodosTableTableUpdateCompanionBuilder, + (TodoEntry, $$TodosTableTableReferences), + TodoEntry, + PrefetchHooks Function({bool category}) + > { + $$TodosTableTableTableManager(_$FirstDb db, $TodosTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$TodosTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$TodosTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$TodosTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value title = const Value.absent(), + Value content = const Value.absent(), + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodosTableCompanion( + id: id, + title: title, + content: content, + targetDate: targetDate, + category: category, + status: status, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + Value title = const Value.absent(), + required String content, + Value targetDate = const Value.absent(), + Value category = const Value.absent(), + Value status = const Value.absent(), + }) => TodosTableCompanion.insert( + id: id, + title: title, + content: content, + targetDate: targetDate, + category: category, + status: status, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable(table), + $$TodosTableTableReferences(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: ({category = false}) { + return PrefetchHooks( + db: db, + explicitlyWatchedTables: [], + addJoins: + < + T extends TableManagerState< + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic, + dynamic + > + >(state) { + if (category) { + state = + state.withJoin( + currentTable: table, + currentColumn: table.category, + referencedTable: $$TodosTableTableReferences + ._categoryTable(db), + referencedColumn: $$TodosTableTableReferences + ._categoryTable(db) + .id, + ) + as T; + } + + return state; + }, + getPrefetchedDataCallback: (items) async { + return []; + }, + ); + }, + ), + ); +} + +typedef $$TodosTableTableProcessedTableManager = + ProcessedTableManager< + _$FirstDb, + $TodosTableTable, + TodoEntry, + $$TodosTableTableFilterComposer, + $$TodosTableTableOrderingComposer, + $$TodosTableTableAnnotationComposer, + $$TodosTableTableCreateCompanionBuilder, + $$TodosTableTableUpdateCompanionBuilder, + (TodoEntry, $$TodosTableTableReferences), + TodoEntry, + PrefetchHooks Function({bool category}) + >; + +class $FirstDbManager { + final _$FirstDb _db; + $FirstDbManager(this._db); + $$CategoriesTableTableManager get categories => + $$CategoriesTableTableManager(_db, _db.categories); + $$TodosTableTableTableManager get todosTable => + $$TodosTableTableTableManager(_db, _db.todosTable); +} + +class $UsersTable extends Users with TableInfo<$UsersTable, User> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $UsersTable(this.attachedDatabase, [this._alias]); + @override + late final GeneratedColumnWithTypeConverter id = + GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ).withConverter($UsersTable.$converterid); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + false, + additionalChecks: GeneratedColumn.checkTextLength( + minTextLength: 6, + maxTextLength: 32, + ), + type: DriftSqlType.string, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways('UNIQUE'), + ); + static const VerificationMeta _isAwesomeMeta = const VerificationMeta( + 'isAwesome', + ); + @override + late final GeneratedColumn isAwesome = GeneratedColumn( + 'is_awesome', + aliasedName, + false, + type: DriftSqlType.bool, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({ + SqlDialect.sqlite: 'CHECK ("is_awesome" IN (0, 1))', + SqlDialect.postgres: '', + }), + defaultValue: const Constant(true), + ); + static const VerificationMeta _profilePictureMeta = const VerificationMeta( + 'profilePicture', + ); + @override + late final GeneratedColumn profilePicture = + GeneratedColumn( + 'profile_picture', + aliasedName, + false, + type: DriftSqlType.blob, + requiredDuringInsert: true, + ); + static const VerificationMeta _creationTimeMeta = const VerificationMeta( + 'creationTime', + ); + @override + late final GeneratedColumn creationTime = GeneratedColumn( + 'creation_time', + aliasedName, + false, + check: () => + ComparableExpr(creationTime).isBiggerThan(Constant(DateTime.utc(1950))), + type: DriftSqlType.dateTime, + requiredDuringInsert: false, + defaultValue: currentDateAndTime, + ); + @override + List get $columns => [ + id, + name, + isAwesome, + profilePicture, + creationTime, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'users'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } else if (isInserting) { + context.missing(_nameMeta); + } + if (data.containsKey('is_awesome')) { + context.handle( + _isAwesomeMeta, + isAwesome.isAcceptableOrUnknown(data['is_awesome']!, _isAwesomeMeta), + ); + } + if (data.containsKey('profile_picture')) { + context.handle( + _profilePictureMeta, + profilePicture.isAcceptableOrUnknown( + data['profile_picture']!, + _profilePictureMeta, + ), + ); + } else if (isInserting) { + context.missing(_profilePictureMeta); + } + if (data.containsKey('creation_time')) { + context.handle( + _creationTimeMeta, + creationTime.isAcceptableOrUnknown( + data['creation_time']!, + _creationTimeMeta, + ), + ); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + User map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return User( + id: $UsersTable.$converterid.fromSql( + attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + ), + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + )!, + isAwesome: attachedDatabase.typeMapping.read( + DriftSqlType.bool, + data['${effectivePrefix}is_awesome'], + )!, + profilePicture: attachedDatabase.typeMapping.read( + DriftSqlType.blob, + data['${effectivePrefix}profile_picture'], + )!, + creationTime: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}creation_time'], + )!, + ); + } + + @override + $UsersTable createAlias(String alias) { + return $UsersTable(attachedDatabase, alias); + } + + static JsonTypeConverter2 $converterid = + TypeConverter.extensionType(); +} + +class User extends DataClass implements Insertable { + final RowId id; + final String name; + final bool isAwesome; + final Uint8List profilePicture; + final DateTime creationTime; + const User({ + required this.id, + required this.name, + required this.isAwesome, + required this.profilePicture, + required this.creationTime, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + { + map['id'] = Variable($UsersTable.$converterid.toSql(id)); + } + map['name'] = Variable(name); + map['is_awesome'] = Variable(isAwesome); + map['profile_picture'] = Variable(profilePicture); + map['creation_time'] = Variable(creationTime); + return map; + } + + UsersCompanion toCompanion(bool nullToAbsent) { + return UsersCompanion( + id: Value(id), + name: Value(name), + isAwesome: Value(isAwesome), + profilePicture: Value(profilePicture), + creationTime: Value(creationTime), + ); + } + + factory User.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return User( + id: $UsersTable.$converterid.fromJson( + serializer.fromJson(json['id']), + ), + name: serializer.fromJson(json['name']), + isAwesome: serializer.fromJson(json['is_awesome']), + profilePicture: serializer.fromJson(json['profile_picture']), + creationTime: serializer.fromJson(json['creation_time']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson($UsersTable.$converterid.toJson(id)), + 'name': serializer.toJson(name), + 'is_awesome': serializer.toJson(isAwesome), + 'profile_picture': serializer.toJson(profilePicture), + 'creation_time': serializer.toJson(creationTime), + }; + } + + User copyWith({ + RowId? id, + String? name, + bool? isAwesome, + Uint8List? profilePicture, + DateTime? creationTime, + }) => User( + id: id ?? this.id, + name: name ?? this.name, + isAwesome: isAwesome ?? this.isAwesome, + profilePicture: profilePicture ?? this.profilePicture, + creationTime: creationTime ?? this.creationTime, + ); + User copyWithCompanion(UsersCompanion data) { + return User( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + isAwesome: data.isAwesome.present ? data.isAwesome.value : this.isAwesome, + profilePicture: data.profilePicture.present + ? data.profilePicture.value + : this.profilePicture, + creationTime: data.creationTime.present + ? data.creationTime.value + : this.creationTime, + ); + } + + @override + String toString() { + return (StringBuffer('User(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('isAwesome: $isAwesome, ') + ..write('profilePicture: $profilePicture, ') + ..write('creationTime: $creationTime') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + name, + isAwesome, + $driftBlobEquality.hash(profilePicture), + creationTime, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is User && + other.id == this.id && + other.name == this.name && + other.isAwesome == this.isAwesome && + $driftBlobEquality.equals( + other.profilePicture, + this.profilePicture, + ) && + other.creationTime == this.creationTime); +} + +class UsersCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value isAwesome; + final Value profilePicture; + final Value creationTime; + const UsersCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.isAwesome = const Value.absent(), + this.profilePicture = const Value.absent(), + this.creationTime = const Value.absent(), + }); + UsersCompanion.insert({ + this.id = const Value.absent(), + required String name, + this.isAwesome = const Value.absent(), + required Uint8List profilePicture, + this.creationTime = const Value.absent(), + }) : name = Value(name), + profilePicture = Value(profilePicture); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? isAwesome, + Expression? profilePicture, + Expression? creationTime, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (isAwesome != null) 'is_awesome': isAwesome, + if (profilePicture != null) 'profile_picture': profilePicture, + if (creationTime != null) 'creation_time': creationTime, + }); + } + + UsersCompanion copyWith({ + Value? id, + Value? name, + Value? isAwesome, + Value? profilePicture, + Value? creationTime, + }) { + return UsersCompanion( + id: id ?? this.id, + name: name ?? this.name, + isAwesome: isAwesome ?? this.isAwesome, + profilePicture: profilePicture ?? this.profilePicture, + creationTime: creationTime ?? this.creationTime, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable($UsersTable.$converterid.toSql(id.value)); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (isAwesome.present) { + map['is_awesome'] = Variable(isAwesome.value); + } + if (profilePicture.present) { + map['profile_picture'] = Variable(profilePicture.value); + } + if (creationTime.present) { + map['creation_time'] = Variable(creationTime.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('UsersCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('isAwesome: $isAwesome, ') + ..write('profilePicture: $profilePicture, ') + ..write('creationTime: $creationTime') + ..write(')')) + .toString(); + } +} + +abstract class _$SecondDb extends GeneratedDatabase { + _$SecondDb(QueryExecutor e) : super(e); + $SecondDbManager get managers => $SecondDbManager(this); + late final $UsersTable users = $UsersTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [users]; + @override + DriftDatabaseOptions get options => + const DriftDatabaseOptions(storeDateTimeAsText: true); +} + +typedef $$UsersTableCreateCompanionBuilder = + UsersCompanion Function({ + Value id, + required String name, + Value isAwesome, + required Uint8List profilePicture, + Value creationTime, + }); +typedef $$UsersTableUpdateCompanionBuilder = + UsersCompanion Function({ + Value id, + Value name, + Value isAwesome, + Value profilePicture, + Value creationTime, + }); + +class $$UsersTableFilterComposer extends Composer<_$SecondDb, $UsersTable> { + $$UsersTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnWithTypeConverterFilters get id => + $composableBuilder( + column: $table.id, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get isAwesome => $composableBuilder( + column: $table.isAwesome, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => ColumnFilters(column), + ); +} + +class $$UsersTableOrderingComposer extends Composer<_$SecondDb, $UsersTable> { + $$UsersTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get isAwesome => $composableBuilder( + column: $table.isAwesome, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$UsersTableAnnotationComposer extends Composer<_$SecondDb, $UsersTable> { + $$UsersTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumnWithTypeConverter get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); + + GeneratedColumn get isAwesome => + $composableBuilder(column: $table.isAwesome, builder: (column) => column); + + GeneratedColumn get profilePicture => $composableBuilder( + column: $table.profilePicture, + builder: (column) => column, + ); + + GeneratedColumn get creationTime => $composableBuilder( + column: $table.creationTime, + builder: (column) => column, + ); +} + +class $$UsersTableTableManager + extends + RootTableManager< + _$SecondDb, + $UsersTable, + User, + $$UsersTableFilterComposer, + $$UsersTableOrderingComposer, + $$UsersTableAnnotationComposer, + $$UsersTableCreateCompanionBuilder, + $$UsersTableUpdateCompanionBuilder, + (User, BaseReferences<_$SecondDb, $UsersTable, User>), + User, + PrefetchHooks Function() + > { + $$UsersTableTableManager(_$SecondDb db, $UsersTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$UsersTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$UsersTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$UsersTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value isAwesome = const Value.absent(), + Value profilePicture = const Value.absent(), + Value creationTime = const Value.absent(), + }) => UsersCompanion( + id: id, + name: name, + isAwesome: isAwesome, + profilePicture: profilePicture, + creationTime: creationTime, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String name, + Value isAwesome = const Value.absent(), + required Uint8List profilePicture, + Value creationTime = const Value.absent(), + }) => UsersCompanion.insert( + id: id, + name: name, + isAwesome: isAwesome, + profilePicture: profilePicture, + creationTime: creationTime, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$UsersTableProcessedTableManager = + ProcessedTableManager< + _$SecondDb, + $UsersTable, + User, + $$UsersTableFilterComposer, + $$UsersTableOrderingComposer, + $$UsersTableAnnotationComposer, + $$UsersTableCreateCompanionBuilder, + $$UsersTableUpdateCompanionBuilder, + (User, BaseReferences<_$SecondDb, $UsersTable, User>), + User, + PrefetchHooks Function() + >; + +class $SecondDbManager { + final _$SecondDb _db; + $SecondDbManager(this._db); + $$UsersTableTableManager get users => + $$UsersTableTableManager(_db, _db.users); +} diff --git a/test/utils/tables.dart b/legacy/drift_offline_sync/test/utils/tables.dart similarity index 100% rename from test/utils/tables.dart rename to legacy/drift_offline_sync/test/utils/tables.dart diff --git a/test/utils/types.dart b/legacy/drift_offline_sync/test/utils/types.dart similarity index 100% rename from test/utils/types.dart rename to legacy/drift_offline_sync/test/utils/types.dart diff --git a/test/utils/user.dart b/legacy/drift_offline_sync/test/utils/user.dart similarity index 100% rename from test/utils/user.dart rename to legacy/drift_offline_sync/test/utils/user.dart diff --git a/test/utils/views.dart b/legacy/drift_offline_sync/test/utils/views.dart similarity index 100% rename from test/utils/views.dart rename to legacy/drift_offline_sync/test/utils/views.dart diff --git a/query_examples.sql b/query_examples.sql deleted file mode 100644 index b1c14e0..0000000 --- a/query_examples.sql +++ /dev/null @@ -1,98 +0,0 @@ -UPDATE crdt_metadata -SET `value` = d.`value` -FROM crdt_metadata AS s -JOIN ( - -- Set multiple fields of the entities that match the where clause - SELECT '__is_deleted__' AS `column`, 'TRUE' AS `value` - UNION ALL - SELECT 'reference_id', NULL; -) AS d ON s.`column` = d.`column` -WHERE ( - `table` = 'category' AND - `column` = 'parent_id' AND - `value` = 'THIS_ENTITY_ROW_ID' -); - - -INSERT INTO crdt_metadata ("table", "column", "value") -SELECT - 'category' AS "table", - d."column" AS "column", - d."value" AS "value" -FROM ( - SELECT '__is_deleted__' AS "column", 'TRUE' AS "value" - UNION ALL - SELECT 'reference_id', NULL -) AS d -ON CONFLICT("table", "column") DO UPDATE -SET "value" = EXCLUDED."value"; - -INSERT INTO crdt_metadata ("table", "column", "value") -VALUES - ('category', '__is_deleted__', 'TRUE'), - ('category', 'reference_id', NULL) -ON CONFLICT("table", "column") DO UPDATE -SET "value" = excluded."value"; - - -INSERT INTO __crdt_data ( - 'user_id', - 'table_name', - 'column_name', - 'row_id', - 'hlc_timestamp', - 'raw_value', - 'value_changed' -) -VALUES - (?, 'category', '__is_deleted__', ?, ?, ?, 1), - (?, 'category', 'reference_id', ?, ?, ?, 1) -ON CONFLICT ('user_id', 'table_name', 'column_name', 'row_id') DO UPDATE -SET - 'hlc_timestamp' = excluded.'hlc_timestamp', - 'raw_value' = excluded.'raw_value', - 'value_changed' = excluded.'value_changed'; - - - -WITH hlc AS (SELECT $nextHlcFunction() AS ts) -INSERT INTO __crdt_data ( - 'table_name', 'column_name', 'row_id', 'hlc_timestamp', 'raw_value', 'value_changed' -) -SELECT - '$table_name', d.'column_name', OLD.'$id_field', hlc.ts, d.'raw_value', d.'value_changed' -FROM ( - SELECT - '$column_name' AS 'column_name', - '?1' AS 'row_id', - '?2' AS 'raw_value', - 'TRUE' AS 'value_changed' -) as d, hlc -ON CONFLICT ('table_name', 'column_name', 'row_id') DO UPDATE -SET - 'hlc_timestamp' = excluded.'hlc_timestamp', - 'raw_value' = excluded.'raw_value', - 'value_changed' = excluded.'value_changed'; - - -CREATE TRIGGER my_trigger -AFTER INSERT ON '$table_name' -BEGIN - INSERT INTO __crdt_data ( - 'table_name', 'column_name', 'row_id', 'hlc_timestamp', 'raw_value', 'value_changed' - ) - SELECT * FROM ( - WITH hlc AS (SELECT $nextHlcFunction() AS ts) - SELECT - '$table_name' AS 'table_name', - '$column_name' AS 'column_name', - OLD.'$id_field' AS 'row_id', - hlc.ts AS 'hlc_timestamp', - NEW.'$column_name' AS 'raw_value', - NEW.'$column_name' IS NOT OLD.'$column_name' AS 'value_changed' - FROM hlc - UNION ALL - [repeat for each column] - ) - WHERE NEW.'$column_name' IS NOT OLD.'$column_name'; -END;