migration script fix

This commit is contained in:
tonyrewin 2022-05-31 15:19:05 +03:00
parent 502f7cd9a7
commit 0b654d8b02
4 changed files with 46 additions and 38 deletions

4
.gitignore vendored
View File

@ -137,4 +137,6 @@ Pipfile.lock
migration/data migration/data
migration/content/**/*.md migration/content/**/*.md
.obsidian .obsidian
*.zip

View File

@ -34,3 +34,4 @@ Also see `Dockerfile`
# How to do an authorized request # How to do an authorized request
Put the header 'Auth' with token from signInQuery or registerQuery. Put the header 'Auth' with token from signInQuery or registerQuery.

View File

@ -16,16 +16,18 @@ def migrate(entry):
'slug': entry['slug'], 'slug': entry['slug'],
# 'createdBy': entry['createdBy'], # 'createdBy': entry['createdBy'],
# 'createdAt': date_parse(entry['createdAt']), # 'createdAt': date_parse(entry['createdAt']),
'title': entry['title'], #.lower(), 'title': entry['title'].replace(' ', ' '), #.lower(),
'children': [], 'children': [],
'community' : Community.default_community.slug, 'community' : Community.default_community.slug,
'body' : entry.get('description') 'body' : entry.get('description')
} }
try: try:
with local_session() as session: with local_session() as session:
topic = session.query(Topic).filter(Topic.slug == entry['slug']).first() topic = session.query(Topic).filter(Topic.slug == topic_dict['slug']).first()
if not topic: if not topic:
topic = Topic.create(**topic_dict) topic = session.query(Topic).filter(Topic.title == topic_dict['title']).first()
if not topic:
topic = Topic.create(**topic_dict)
except Exception as e: except Exception as e:
print(e) print(e)
raise e raise e

View File

@ -5,36 +5,39 @@ from orm import Topic, Community
from dateutil.parser import parse as date_parse from dateutil.parser import parse as date_parse
def migrate(entry): def migrate(entry):
''' '''
type Topic { type Topic {
slug: String! # ID slug: String! # ID
createdBy: Int! # User createdBy: Int! # User
createdAt: DateTime! createdAt: DateTime!
title: String title: String
parents: [String] # NOTE: topic can have parent topics parents: [String] # NOTE: topic can have parent topics
children: [String] # and children children: [String] # and children
} }
''' '''
if type(entry['createdAt']) == type(''): if type(entry['createdAt']) == type(''):
ts = date_parse(entry['createdAt']) ts = date_parse(entry['createdAt'])
else: else:
ts = datetime.fromtimestamp(entry['createdAt']/1000) ts = datetime.fromtimestamp(entry['createdAt']/1000)
topic_dict = { topic_dict = {
'slug': entry['slug'], 'slug': entry['slug'],
# 'createdBy': entry['createdBy'], # 'createdBy': entry['createdBy'],
# 'createdAt': ts, # 'createdAt': ts,
'title': entry['title'], # .lower(), 'title': entry['title'].replace(' ', ' '), # .lower(),
'children': [], 'children': [],
'community' : Community.default_community.slug, 'community' : Community.default_community.slug,
'body' : entry.get('description') 'body' : entry.get('description')
} }
try: try:
with local_session() as session: with local_session() as session:
topic = session.query(Topic).filter(Topic.slug == entry['slug']).first() topic = session.query(Topic).filter(Topic.slug == topic_dict['slug']).first()
if not topic: topic = Topic.create(**topic_dict) if not topic:
except Exception as e: topic = session.query(Topic).filter(Topic.title == topic_dict['title']).first()
print(e) if not topic:
raise e topic = Topic.create(**topic_dict)
except Exception as e:
topic_dict['tag_id'] = entry['_id'] print(e)
return topic_dict raise e
topic_dict['tag_id'] = entry['_id']
return topic_dict