source: tracpasteplugin/trunk/tracpaste/db.py @ 14799

Last change on this file since 14799 was 14799, checked in by Ryan J Ollos, 9 years ago

0.3.0dev: Refactored IEnvironmentSetupParticipant per discussion in trac:#8172.

File size: 1.8 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2007 Armin Ronacher <armin.ronacher@active-4.com>
4# Copyright (C) 2008 Michael Renzmann <mrenzmann@otaku42.de>
5# Copyright (C) 2015 Ryan J Ollos <ryan.j.ollos@gmail.com>
6# All rights reserved.
7#
8# This software is licensed as described in the file COPYING, which
9# you should have received as part of this distribution.
10
11from trac.core import *
12from trac.db.api import DatabaseManager
13from trac.db.schema import Column, Index, Table
14from trac.env import IEnvironmentSetupParticipant
15
16schema_version = 3
17schema_version_name = 'tracpaste_version'
18
19schema = [
20    Table('pastes', key='id')[
21        Column('id', auto_increment=True),
22        Column('title'),
23        Column('author'),
24        Column('mimetype'),
25        Column('data'),
26        Column('time', type='int'),
27        Index(['id']),
28        Index(['time'])
29    ],
30]
31
32
33class TracpasteSetup(Component):
34
35    implements(IEnvironmentSetupParticipant)
36
37    def __init__(self):
38        self.dbm = DatabaseManager(self.env)
39
40    # IEnvironmentSetupParticipant methods
41
42    def environment_created(self):
43        self.dbm.create_tables(schema)
44        self.dbm.set_database_version(schema_version, schema_version_name)
45
46    def environment_needs_upgrade(self, db=None):
47        return self.dbm.needs_upgrade(schema_version, schema_version_name)
48
49    def upgrade_environment(self, db=None):
50        if not self.dbm.get_database_version(schema_version_name) and \
51                'pastes' in self.dbm.get_table_names():
52            self.dbm.set_database_version(1, schema_version_name)
53
54        if not self.dbm.get_database_version(schema_version_name):
55            self.environment_created()
56        else:
57            self.dbm.upgrade(schema_version, schema_version_name,
58                             'tracpaste.upgrades')
Note: See TracBrowser for help on using the repository browser.