012_add_tools.py 2.09 KB
Newer Older
Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
1
2
"""Peewee migrations -- 009_add_models.py.

Timothy J. Baek's avatar
Timothy J. Baek committed
3
Some examples (model - class or model name)::
Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
4

Timothy J. Baek's avatar
Timothy J. Baek committed
5
6
    > Model = migrator.orm['table_name']            # Return model in current state by name
    > Model = migrator.ModelClass                   # Return model in current state by name
Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
7

Timothy J. Baek's avatar
Timothy J. Baek committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    > 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)
Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
24

Timothy J. Baek's avatar
Timothy J. Baek committed
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""

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."""

Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    @migrator.create_model
    class Tool(pw.Model):
        id = pw.TextField(unique=True)
        user_id = pw.TextField()

        name = pw.TextField()
        content = pw.TextField()
        specs = pw.TextField()

        meta = pw.TextField()

        created_at = pw.BigIntegerField(null=False)
        updated_at = pw.BigIntegerField(null=False)

        class Meta:
            table_name = "tool"
Timothy J. Baek's avatar
Timothy J. Baek committed
56
57
58
59
60


def rollback(migrator: Migrator, database: pw.Database, *, fake=False):
    """Write your rollback migrations here."""

Timothy J. Baek's avatar
revert  
Timothy J. Baek committed
61
    migrator.remove_model("tool")