Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic: Multi-provider databases support #262

Open
hez2010 opened this issue Apr 2, 2024 · 1 comment
Open

Epic: Multi-provider databases support #262

hez2010 opened this issue Apr 2, 2024 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@hez2010
Copy link
Collaborator

hez2010 commented Apr 2, 2024

We are going to add support for multi-provider databases.
By adding this support, users can choose their own preferred database when use GZCTF.

Database support:

  • PostgreSQL
  • SQL Server
  • MySQL
  • SQLite

By default, the database provider will be PostgreSQL.

@hez2010 hez2010 added the enhancement New feature or request label Apr 2, 2024
@hez2010 hez2010 self-assigned this Apr 2, 2024
@hez2010 hez2010 pinned this issue Apr 2, 2024
@hez2010 hez2010 unpinned this issue Apr 11, 2024
@hez2010
Copy link
Collaborator Author

hez2010 commented Apr 24, 2024

Summary on the current progress.

We have done the initial work for the fundamental of multi-database support. But each database provider comes with its own limitation which results in the current data model which uses PostgreSQL as the baseline cannot be used directly on different databases.

Particularly,

  • SQL Server: doesn't support multiple cascades on the same foreign key, this has to be workaround with triggers.
  • MySQL: doesn't support DateTimeOffset which is basically a DateTime type with time zone information.
  • SQLite: doesn't support any type other than primitive types and DateTime.

We need further work on the data model to fit the requirements coming from all the databases and would highly possibly require breaking changes to the database schema.

Triaging this as a future work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant