Skip to content

Conversation

@asukaminato0721
Copy link
Contributor

Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

part of #26788

Screenshots

Before After
... ...

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran make lint and make type-check (backend) and cd web && npx lint-staged (frontend) to appease the lint gods

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @asukaminato0721, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on modernizing the AppModelConfig SQLAlchemy model by integrating SQLAlchemy 2.0 style type annotations and updating its base class. These changes aim to improve type safety, code clarity, and maintainability across the codebase. Corresponding adjustments have been made in test files to ensure compatibility and demonstrate the new instantiation patterns.

Highlights

  • SQLAlchemy Model Refactoring: The AppModelConfig SQLAlchemy model has been refactored to adopt modern SQLAlchemy 2.0 style type annotations, enhancing type safety and code readability.
  • Base Class Update: The AppModelConfig class now inherits from TypeBase instead of Base, aligning with contemporary SQLAlchemy declarative mapping practices.
  • Type Annotations for Columns: All column definitions within AppModelConfig have been updated to include explicit Mapped[] type annotations, providing clearer data type expectations.
  • Test Case Modernization: Existing test cases that instantiate AppModelConfig have been updated to use constructor keyword arguments, reflecting a more idiomatic and readable way of creating model instances.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the AppModelConfig model to use modern SQLAlchemy 2.0 syntax with Mapped and type hints, which is a great improvement for code clarity and maintainability. The corresponding changes in the test files to use the new dataclass-style constructor are also well-aligned with this refactoring. However, I've identified a few critical issues that need to be addressed. Firstly, in api/models/model.py, several columns in AppModelConfig are typed as nullable but are defined as non-nullable in the database mapping, which will lead to runtime errors. Secondly, in api/tests/test_containers_integration_tests/services/test_workflow_service.py, the tests are passing an unexpected tenant_id keyword argument when instantiating AppModelConfig, which will cause the tests to fail.

@asukaminato0721 asukaminato0721 marked this pull request as ready for review January 16, 2026 04:48
Copilot AI review requested due to automatic review settings January 16, 2026 04:48
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. refactor labels Jan 16, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the AppModelConfig model to use SQLAlchemy 2.0-style typed mappings by migrating from Base to TypeBase and adding Mapped type annotations to all columns. This is part of a larger effort to modernize the codebase's ORM usage.

Changes:

  • Migrated AppModelConfig from Base to TypeBase with full type annotations
  • Updated test instantiation patterns from attribute assignment to constructor-based initialization
  • Added explicit default="simple" parameter to prompt_type field

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
api/models/model.py Converted AppModelConfig to TypeBase with Mapped type annotations for all columns
api/tests/test_containers_integration_tests/services/test_workflow_service.py Refactored AppModelConfig instantiation in two test methods to use constructor pattern
api/tests/test_containers_integration_tests/services/test_app_dsl_service.py Refactored AppModelConfig instantiation in test to use constructor pattern

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@asukaminato0721
Copy link
Contributor Author

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the AppModelConfig to use SQLAlchemy's MappedAsDataclass, which is a great step towards more modern, type-safe code. The necessary changes to accommodate the new constructor have been correctly applied in most places. However, I found one critical issue where an AppModelConfig instance is created without a required app_id, which will lead to a runtime error. My review includes a specific suggestion to fix this.

asukaminato0721 and others added 2 commits January 20, 2026 09:41
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@asukaminato0721
Copy link
Contributor Author

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the AppModelConfig model to use modern SQLAlchemy 2.0 syntax with MappedAsDataclass. The changes correctly update the model definition and all instantiation sites to use the new dataclass-style __init__.

My main feedback is regarding a potential unintended schema change where many columns in AppModelConfig have been changed from non-nullable to nullable. Please see the specific comment for details. If this is intentional, it would be good to add a comment in the code or PR description explaining why. Otherwise, it should be fixed to avoid potential data integrity issues.

The rest of the changes in the service and test files are consistent with the model refactoring and look good.

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Jan 24, 2026
@crazywoola crazywoola merged commit 5c4028d into langgenius:main Jan 24, 2026
12 checks passed
@asukaminato0721 asukaminato0721 deleted the typebase-AppModelConfig branch January 24, 2026 02:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lgtm This PR has been approved by a maintainer refactor size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants