1#!/usr/local/bin/python3.8
2# -*- coding: utf-8 -*-
3# Copyright (c) 2012-2016 Seafile Ltd.
4
5import os
6import sys
7import MySQLdb
8
9import settings
10
11try:
12    dbname = os.environ['DBNAME']
13    dbuser = os.environ['DBUSER']
14    dbpasswd = os.environ['DBPASSWD']
15except:
16    sys.stderr.write('Environment not set! Exit\n')
17    sys.exit(1)
18
19def check_settings():
20    if settings.DATABASE_ENGINE == 'mysql':
21        sys.stderr.write('[ERROR] Current settings is mysql, need sqlite settings\n')
22        sys.exit(1)
23
24def do_create():
25    root_passwd = input("Please enter root password to create database %s: " % dbname)
26
27    conn = MySQLdb.Connect(host='localhost', user='root', passwd=root_passwd)
28    cursor = conn.cursor()
29
30    create_cmd = ( "CREATE DATABASE IF NOT EXISTS `%s` default charset utf8 COLLATE utf8_general_ci;") % (dbname)
31    grant_cmd = ("grant all privileges on %s.* to '%s'@localhost identified by '%s';") % (dbname, dbuser, dbpasswd)
32
33    try:
34        cursor.execute(create_cmd)
35        cursor.execute(grant_cmd)
36    except:
37        pass
38
39    cursor.close()
40    conn.close()
41
42def do_delete(prefix):
43        cmd = ('echo "select concat(\'drop table \',  table_name ,\';\') from TABLES where TABLE_SCHEMA =\'%s\' and table_name like \'%s_%%\' ;" | mysql -u %s -p%s information_schema | sed -n \'2,$p\' | mysql -u %s -p%s %s') % (dbname, prefix, dbuser, dbpasswd, dbuser, dbpasswd, dbname)
44        try:
45            output = os.popen(cmd).read()
46        except:
47            pass
48
49if __name__=="__main__":
50    # check current settings.py
51    check_settings()
52
53    # create database if not exists
54    do_create()
55
56    # detele all seahub tables
57    for app in settings.INSTALLED_APPS:
58        app_name = app.split('.')[-1]
59        do_delete(app_name)
60    do_delete('django')
61
62    print('[Delete seahub tables...Done]')
63
64