Skip to content

Commit

Permalink
Пересоздание БД без интерактивного диалога
Browse files Browse the repository at this point in the history
Программа разделения по полю, v5.3
Программа, упрощающая поиск, v8.4
Программа создания БД, v6.4
Программа подсчёта наборов значений, v5.3
Программа конкатенации, v4.2
Программа аннотирования, v8.5

- Теперь разрешение конфликта в случае существования БД с тем же именем регулируется из CLI и GUI, а не через интерактивный диалог (closes #25).
  • Loading branch information
PlatonB committed May 7, 2022
1 parent a924c16 commit 0b736fd
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 32 deletions.
11 changes: 6 additions & 5 deletions annotate.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = 'v8.4'
__version__ = 'v8.5'

import sys, locale, os, datetime, gzip, copy
sys.dont_write_bytecode = True
Expand All @@ -7,8 +7,7 @@
from pymongo.collation import Collation
from bson.son import SON
from multiprocessing import Pool
from backend.common_errors import DifFmtsError, ByLocTsvError, NoSuchFieldError
from backend.resolve_db_existence import resolve_db_existence, DbAlreadyExistsError
from backend.common_errors import DifFmtsError, DbAlreadyExistsError, ByLocTsvError, NoSuchFieldError
from backend.get_field_paths import parse_nested_objs
from backend.def_data_type import def_data_type
from backend.doc_to_line import restore_line
Expand Down Expand Up @@ -57,9 +56,11 @@ def __init__(self, args, ver):
self.trg_file_fmt = self.src_coll_ext
if '/' in args.trg_place:
self.trg_dir_path = os.path.normpath(args.trg_place)
elif args.trg_place != self.src_db_name:
elif args.trg_place != self.src_db_name \
and (args.trg_place not in client.list_database_names() \
or args.rewrite_existing_db):
client.drop_database(args.trg_place)
self.trg_db_name = args.trg_place
resolve_db_existence(self.trg_db_name)
else:
raise DbAlreadyExistsError()
max_proc_quan = args.max_proc_quan
Expand Down
11 changes: 6 additions & 5 deletions concatenate.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
__version__ = 'v4.1'
__version__ = 'v4.2'

import sys, locale, datetime, copy, os
sys.dont_write_bytecode = True
from cli.concatenate_cli import add_args_ru, add_args_en
from pymongo import MongoClient, IndexModel, ASCENDING
from backend.resolve_db_existence import resolve_db_existence, DbAlreadyExistsError
from backend.common_errors import NoSuchFieldError
from backend.common_errors import DbAlreadyExistsError, NoSuchFieldError
from backend.get_field_paths import parse_nested_objs

class Main():
Expand Down Expand Up @@ -44,9 +43,11 @@ def __init__(self, args, ver):
src_db_obj = client[self.src_db_name]
self.src_coll_names = src_db_obj.list_collection_names()
src_coll_ext = self.src_coll_names[0].rsplit('.', maxsplit=1)[1]
if args.trg_db_name != self.src_db_name:
if args.trg_db_name != self.src_db_name \
and (args.trg_db_name not in client.list_database_names() \
or args.rewrite_existing_db):
client.drop_database(args.trg_db_name)
self.trg_db_name = args.trg_db_name
resolve_db_existence(self.trg_db_name)
else:
raise DbAlreadyExistsError()
mongo_exclude_meta = {'meta': {'$exists': False}}
Expand Down
10 changes: 6 additions & 4 deletions count.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
__version__ = 'v5.2'
__version__ = 'v5.3'

import sys, locale, os, datetime, copy, gzip
sys.dont_write_bytecode = True
from cli.count_cli import add_args_ru, add_args_en
from pymongo import MongoClient, ASCENDING, DESCENDING, IndexModel
from backend.resolve_db_existence import resolve_db_existence, DbAlreadyExistsError
from backend.common_errors import DbAlreadyExistsError
from backend.get_field_paths import parse_nested_objs
from bson.decimal128 import Decimal128
from bson.son import SON
Expand Down Expand Up @@ -69,9 +69,11 @@ def __init__(self, args, ver):
src_coll_ext = self.src_coll_name.rsplit('.', maxsplit=1)[1]
if '/' in args.trg_place:
self.trg_dir_path = os.path.normpath(args.trg_place)
elif args.trg_place != self.src_db_name:
elif args.trg_place != self.src_db_name \
and (args.trg_place not in client.list_database_names() \
or args.rewrite_existing_db):
client.drop_database(args.trg_place)
self.trg_db_name = args.trg_place
resolve_db_existence(self.trg_db_name)
else:
raise DbAlreadyExistsError()
mongo_exclude_meta = {'meta': {'$exists': False}}
Expand Down
18 changes: 10 additions & 8 deletions create.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
__version__ = 'v6.3'
__version__ = 'v6.4'

import sys, locale, os, re, datetime, gzip
sys.dont_write_bytecode = True
from cli.create_cli import add_args_ru, add_args_en
from pymongo import MongoClient, ASCENDING, IndexModel
from multiprocessing import Pool
from backend.common_errors import DifFmtsError
from backend.resolve_db_existence import resolve_db_existence
from backend.common_errors import DifFmtsError, DbAlreadyExistsError
from backend.def_data_type import def_data_type

class NoDataToUploadError(Exception):
Expand Down Expand Up @@ -113,11 +112,14 @@ def __init__(self, args, ver):
self.trg_db_name = os.path.basename(self.src_dir_path)
else:
self.trg_db_name = args.trg_db_name
if not args.append:
resolve_db_existence(self.trg_db_name)
else:
self.src_file_names -= set(map(lambda cur_coll_name: cur_coll_name + '.gz',
client[self.trg_db_name].list_collection_names()))
if self.trg_db_name in client.list_database_names():
if args.if_db_exists in [None, '']:
raise DbAlreadyExistsError()
elif args.if_db_exists == 'rewrite':
client.drop_database(self.trg_db_name)
elif args.if_db_exists == 'replenish':
self.src_file_names -= set(map(lambda cur_coll_name: cur_coll_name + '.gz',
client[self.trg_db_name].list_collection_names()))
if len(self.src_file_names) == 0:
raise NoDataToUploadError()
max_proc_quan = args.max_proc_quan
Expand Down
11 changes: 6 additions & 5 deletions query.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = 'v8.3'
__version__ = 'v8.4'

import sys, locale, os, datetime, copy, gzip
sys.dont_write_bytecode = True
Expand All @@ -8,9 +8,8 @@
from multiprocessing import Pool
from bson.son import SON
from bson.decimal128 import Decimal128
from backend.resolve_db_existence import resolve_db_existence, DbAlreadyExistsError
from backend.get_field_paths import parse_nested_objs
from backend.common_errors import NoSuchFieldError
from backend.common_errors import DbAlreadyExistsError, NoSuchFieldError
from backend.doc_to_line import restore_line

class Main():
Expand Down Expand Up @@ -61,9 +60,11 @@ def __init__(self, args, ver):
self.trg_file_fmt = src_coll_ext
if '/' in args.trg_place:
self.trg_dir_path = os.path.normpath(args.trg_place)
elif args.trg_place != self.src_db_name:
elif args.trg_place != self.src_db_name \
and (args.trg_place not in client.list_database_names() \
or args.rewrite_existing_db):
client.drop_database(args.trg_place)
self.trg_db_name = args.trg_place
resolve_db_existence(self.trg_db_name)
else:
raise DbAlreadyExistsError()
max_proc_quan = args.max_proc_quan
Expand Down
11 changes: 6 additions & 5 deletions split.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = 'v5.2'
__version__ = 'v5.3'

import sys, locale, os, datetime, copy, gzip
sys.dont_write_bytecode = True
Expand All @@ -7,9 +7,8 @@
from pymongo.collation import Collation
from multiprocessing import Pool
from bson.son import SON
from backend.resolve_db_existence import resolve_db_existence, DbAlreadyExistsError
from backend.common_errors import DbAlreadyExistsError, NoSuchFieldError
from backend.get_field_paths import parse_nested_objs
from backend.common_errors import NoSuchFieldError
from backend.doc_to_line import restore_line

class Main():
Expand Down Expand Up @@ -56,9 +55,11 @@ def __init__(self, args, ver):
self.trg_file_fmt = src_coll_ext
if '/' in args.trg_place:
self.trg_dir_path = os.path.normpath(args.trg_place)
elif args.trg_place != self.src_db_name:
elif args.trg_place != self.src_db_name \
and (args.trg_place not in client.list_database_names() \
or args.rewrite_existing_db):
client.drop_database(args.trg_place)
self.trg_db_name = args.trg_place
resolve_db_existence(self.trg_db_name)
else:
raise DbAlreadyExistsError()
max_proc_quan = args.max_proc_quan
Expand Down

0 comments on commit 0b736fd

Please sign in to comment.