-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1416 from open-webui/dev
0.1.117
- Loading branch information
Showing
45 changed files
with
2,065 additions
and
483 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
149 changes: 149 additions & 0 deletions
149
backend/apps/web/internal/migrations/001_initial_schema.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
"""Peewee migrations -- 001_initial_schema.py. | ||
Some examples (model - class or model name):: | ||
> Model = migrator.orm['table_name'] # Return model in current state by name | ||
> Model = migrator.ModelClass # Return model in current state by name | ||
> migrator.sql(sql) # Run custom SQL | ||
> migrator.run(func, *args, **kwargs) # Run python function with the given args | ||
> migrator.create_model(Model) # Create a model (could be used as decorator) | ||
> migrator.remove_model(model, cascade=True) # Remove a model | ||
> migrator.add_fields(model, **fields) # Add fields to a model | ||
> migrator.change_fields(model, **fields) # Change fields | ||
> migrator.remove_fields(model, *field_names, cascade=True) | ||
> migrator.rename_field(model, old_field_name, new_field_name) | ||
> migrator.rename_table(model, new_table_name) | ||
> migrator.add_index(model, *col_names, unique=False) | ||
> migrator.add_not_null(model, *field_names) | ||
> migrator.add_default(model, field_name, default) | ||
> migrator.add_constraint(model, name, sql) | ||
> migrator.drop_index(model, *col_names) | ||
> migrator.drop_not_null(model, *field_names) | ||
> migrator.drop_constraints(model, *constraints) | ||
""" | ||
|
||
from contextlib import suppress | ||
|
||
import peewee as pw | ||
from peewee_migrate import Migrator | ||
|
||
|
||
with suppress(ImportError): | ||
import playhouse.postgres_ext as pw_pext | ||
|
||
|
||
def migrate(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your migrations here.""" | ||
|
||
@migrator.create_model | ||
class Auth(pw.Model): | ||
id = pw.CharField(max_length=255, unique=True) | ||
email = pw.CharField(max_length=255) | ||
password = pw.CharField(max_length=255) | ||
active = pw.BooleanField() | ||
|
||
class Meta: | ||
table_name = "auth" | ||
|
||
@migrator.create_model | ||
class Chat(pw.Model): | ||
id = pw.CharField(max_length=255, unique=True) | ||
user_id = pw.CharField(max_length=255) | ||
title = pw.CharField() | ||
chat = pw.TextField() | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "chat" | ||
|
||
@migrator.create_model | ||
class ChatIdTag(pw.Model): | ||
id = pw.CharField(max_length=255, unique=True) | ||
tag_name = pw.CharField(max_length=255) | ||
chat_id = pw.CharField(max_length=255) | ||
user_id = pw.CharField(max_length=255) | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "chatidtag" | ||
|
||
@migrator.create_model | ||
class Document(pw.Model): | ||
id = pw.AutoField() | ||
collection_name = pw.CharField(max_length=255, unique=True) | ||
name = pw.CharField(max_length=255, unique=True) | ||
title = pw.CharField() | ||
filename = pw.CharField() | ||
content = pw.TextField(null=True) | ||
user_id = pw.CharField(max_length=255) | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "document" | ||
|
||
@migrator.create_model | ||
class Modelfile(pw.Model): | ||
id = pw.AutoField() | ||
tag_name = pw.CharField(max_length=255, unique=True) | ||
user_id = pw.CharField(max_length=255) | ||
modelfile = pw.TextField() | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "modelfile" | ||
|
||
@migrator.create_model | ||
class Prompt(pw.Model): | ||
id = pw.AutoField() | ||
command = pw.CharField(max_length=255, unique=True) | ||
user_id = pw.CharField(max_length=255) | ||
title = pw.CharField() | ||
content = pw.TextField() | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "prompt" | ||
|
||
@migrator.create_model | ||
class Tag(pw.Model): | ||
id = pw.CharField(max_length=255, unique=True) | ||
name = pw.CharField(max_length=255) | ||
user_id = pw.CharField(max_length=255) | ||
data = pw.TextField(null=True) | ||
|
||
class Meta: | ||
table_name = "tag" | ||
|
||
@migrator.create_model | ||
class User(pw.Model): | ||
id = pw.CharField(max_length=255, unique=True) | ||
name = pw.CharField(max_length=255) | ||
email = pw.CharField(max_length=255) | ||
role = pw.CharField(max_length=255) | ||
profile_image_url = pw.CharField(max_length=255) | ||
timestamp = pw.DateField() | ||
|
||
class Meta: | ||
table_name = "user" | ||
|
||
|
||
def rollback(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your rollback migrations here.""" | ||
|
||
migrator.remove_model("user") | ||
|
||
migrator.remove_model("tag") | ||
|
||
migrator.remove_model("prompt") | ||
|
||
migrator.remove_model("modelfile") | ||
|
||
migrator.remove_model("document") | ||
|
||
migrator.remove_model("chatidtag") | ||
|
||
migrator.remove_model("chat") | ||
|
||
migrator.remove_model("auth") |
48 changes: 48 additions & 0 deletions
48
backend/apps/web/internal/migrations/002_add_local_sharing.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
"""Peewee migrations -- 002_add_local_sharing.py. | ||
Some examples (model - class or model name):: | ||
> Model = migrator.orm['table_name'] # Return model in current state by name | ||
> Model = migrator.ModelClass # Return model in current state by name | ||
> migrator.sql(sql) # Run custom SQL | ||
> migrator.run(func, *args, **kwargs) # Run python function with the given args | ||
> migrator.create_model(Model) # Create a model (could be used as decorator) | ||
> migrator.remove_model(model, cascade=True) # Remove a model | ||
> migrator.add_fields(model, **fields) # Add fields to a model | ||
> migrator.change_fields(model, **fields) # Change fields | ||
> migrator.remove_fields(model, *field_names, cascade=True) | ||
> migrator.rename_field(model, old_field_name, new_field_name) | ||
> migrator.rename_table(model, new_table_name) | ||
> migrator.add_index(model, *col_names, unique=False) | ||
> migrator.add_not_null(model, *field_names) | ||
> migrator.add_default(model, field_name, default) | ||
> migrator.add_constraint(model, name, sql) | ||
> migrator.drop_index(model, *col_names) | ||
> migrator.drop_not_null(model, *field_names) | ||
> migrator.drop_constraints(model, *constraints) | ||
""" | ||
|
||
from contextlib import suppress | ||
|
||
import peewee as pw | ||
from peewee_migrate import Migrator | ||
|
||
|
||
with suppress(ImportError): | ||
import playhouse.postgres_ext as pw_pext | ||
|
||
|
||
def migrate(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your migrations here.""" | ||
|
||
migrator.add_fields( | ||
"chat", share_id=pw.CharField(max_length=255, null=True, unique=True) | ||
) | ||
|
||
|
||
def rollback(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your rollback migrations here.""" | ||
|
||
migrator.remove_fields("chat", "share_id") |
48 changes: 48 additions & 0 deletions
48
backend/apps/web/internal/migrations/003_add_auth_api_key.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
"""Peewee migrations -- 002_add_local_sharing.py. | ||
Some examples (model - class or model name):: | ||
> Model = migrator.orm['table_name'] # Return model in current state by name | ||
> Model = migrator.ModelClass # Return model in current state by name | ||
> migrator.sql(sql) # Run custom SQL | ||
> migrator.run(func, *args, **kwargs) # Run python function with the given args | ||
> migrator.create_model(Model) # Create a model (could be used as decorator) | ||
> migrator.remove_model(model, cascade=True) # Remove a model | ||
> migrator.add_fields(model, **fields) # Add fields to a model | ||
> migrator.change_fields(model, **fields) # Change fields | ||
> migrator.remove_fields(model, *field_names, cascade=True) | ||
> migrator.rename_field(model, old_field_name, new_field_name) | ||
> migrator.rename_table(model, new_table_name) | ||
> migrator.add_index(model, *col_names, unique=False) | ||
> migrator.add_not_null(model, *field_names) | ||
> migrator.add_default(model, field_name, default) | ||
> migrator.add_constraint(model, name, sql) | ||
> migrator.drop_index(model, *col_names) | ||
> migrator.drop_not_null(model, *field_names) | ||
> migrator.drop_constraints(model, *constraints) | ||
""" | ||
|
||
from contextlib import suppress | ||
|
||
import peewee as pw | ||
from peewee_migrate import Migrator | ||
|
||
|
||
with suppress(ImportError): | ||
import playhouse.postgres_ext as pw_pext | ||
|
||
|
||
def migrate(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your migrations here.""" | ||
|
||
migrator.add_fields( | ||
"user", api_key=pw.CharField(max_length=255, null=True, unique=True) | ||
) | ||
|
||
|
||
def rollback(migrator: Migrator, database: pw.Database, *, fake=False): | ||
"""Write your rollback migrations here.""" | ||
|
||
migrator.remove_fields("user", "api_key") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Database Migrations | ||
|
||
This directory contains all the database migrations for the web app. | ||
Migrations are done using the [`peewee-migrate`](https://github.com/klen/peewee_migrate) library. | ||
|
||
Migrations are automatically ran at app startup. | ||
|
||
## Creating a migration | ||
|
||
Have you made a change to the schema of an existing model? | ||
You will need to create a migration file to ensure that existing databases are updated for backwards compatibility. | ||
|
||
1. Have a database file (`webui.db`) that has the old schema prior to any of your changes. | ||
2. Make your changes to the models. | ||
3. From the `backend` directory, run the following command: | ||
```bash | ||
pw_migrate create --auto --auto-source apps.web.models --database sqlite:///${SQLITE_DB} --directory apps/web/internal/migrations ${MIGRATION_NAME} | ||
``` | ||
- `$SQLITE_DB` should be the path to the database file. | ||
- `$MIGRATION_NAME` should be a descriptive name for the migration. | ||
4. The migration file will be created in the `apps/web/internal/migrations` directory. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.