/
version.py
42 lines (31 loc) · 1.14 KB
/
version.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import os
from redberry.models import db, RedModel
from redberry.blueprint import REDBERRY_ROOT
class RedVersion(RedModel):
__tablename__ = 'redberry_versions'
id = db.Column(db.Integer, primary_key=True)
version = db.Column(db.String(255))
created_at = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp())
@classmethod
def last(cls):
return cls.query.order_by('created_at DESC').first()
@classmethod
def all_migrations(cls):
migrations = []
files = os.listdir(os.path.join(REDBERRY_ROOT, 'models', 'migrations'))
for f in files:
try:
bits = filter(lambda x: x is not None, f.split('_'))
if len(bits) > 1 and int(bits[0]):
migrations.append(f)
except:
pass
return migrations
@classmethod
def already_run(cls, migration_file):
return cls.query.filter_by(version=migration_file).first()
@classmethod
def store_migration(cls, migration_file):
migration = RedVersion(version=migration_file)
db.session.add(migration)
db.session.flush()