초기커밋
This commit is contained in:
528
UGQDatabase/FakeDataScript/insert_fake_data.py
Normal file
528
UGQDatabase/FakeDataScript/insert_fake_data.py
Normal file
@@ -0,0 +1,528 @@
|
||||
import uuid
|
||||
from pymongo import MongoClient
|
||||
from faker import Faker
|
||||
import json
|
||||
import datetime
|
||||
import random
|
||||
from pymongo import ReturnDocument
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class QuestContentState(Enum):
|
||||
NoneState = 0
|
||||
Editable = 1
|
||||
Test = 2
|
||||
Standby = 3
|
||||
Live = 4
|
||||
Shutdown = 5
|
||||
|
||||
class CreatorPointHistoryKind(Enum):
|
||||
NoneKind = 0
|
||||
QuestProfit = 1
|
||||
AvatarReceived = 2
|
||||
CashReceived = 3
|
||||
|
||||
def random_datetime():
|
||||
year = random.randrange(2019,2025)
|
||||
month = random.randrange(1,13)
|
||||
day = random.randrange(1,28)
|
||||
hour = random.randrange(0,24)
|
||||
minute = random.randrange(0, 60)
|
||||
second = random.randrange(0, 60)
|
||||
return datetime.datetime(year, month, day, hour, minute, second)
|
||||
|
||||
|
||||
def drop_all():
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
like_collection = ugq_db.get_collection("Like")
|
||||
bookmark_collection = ugq_db.get_collection("Bookmark")
|
||||
cp_history_collection = ugq_db.get_collection("CreatorPointHistory")
|
||||
|
||||
quest_accepted_collection = ugq_db.get_collection("QuestAccepted")
|
||||
quest_aborted_collection = ugq_db.get_collection("QuestAborted")
|
||||
quest_completed_collection = ugq_db.get_collection("QuestCompleted")
|
||||
report_collection = ugq_db.get_collection("Report")
|
||||
|
||||
account_collection.drop()
|
||||
quest_content_collection.drop()
|
||||
like_collection.drop()
|
||||
bookmark_collection.drop()
|
||||
cp_history_collection.drop()
|
||||
quest_accepted_collection.drop()
|
||||
quest_aborted_collection.drop()
|
||||
quest_completed_collection.drop()
|
||||
report_collection.drop()
|
||||
|
||||
pass
|
||||
|
||||
def init():
|
||||
quest_sequence = ugq_db.get_collection("QuestIdSequence")
|
||||
|
||||
filter = {"_id": "QuestId" }
|
||||
|
||||
found_doc = quest_sequence.find_one(filter)
|
||||
if found_doc is None:
|
||||
doc = {
|
||||
"_id": "QuestId",
|
||||
"Sequence": 0,
|
||||
"CreatedAt": datetime.datetime.now(),
|
||||
"UpdatedAt": datetime.datetime.now(),
|
||||
}
|
||||
|
||||
ret = quest_sequence.insert_one(doc)
|
||||
print("QuestIdSequence: " + str(ret))
|
||||
|
||||
|
||||
|
||||
def get_next_quest_id(ugq_db):
|
||||
|
||||
quest_sequence = ugq_db.get_collection("QuestIdSequence")
|
||||
|
||||
filter = {"_id": "QuestId" }
|
||||
update = {
|
||||
'$inc': {'Sequence' : 1},
|
||||
'$set': {'UpdatedAt': datetime.datetime.now() }
|
||||
}
|
||||
|
||||
updated_doc = quest_sequence.find_one_and_update(
|
||||
filter, update,
|
||||
return_document=ReturnDocument.AFTER
|
||||
)
|
||||
|
||||
return updated_doc["Sequence"]
|
||||
|
||||
|
||||
def insert_fake_account(ugq_db, count):
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
# account_collection.drop()
|
||||
|
||||
fake_kr = Faker('ko_KR')
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
cp = random.randrange(1, 5000)
|
||||
|
||||
account_doc = {
|
||||
"UserGuid": str(uuid.uuid4()),
|
||||
"Nickname": fake_kr.name(),
|
||||
"AdditionalSlotCount": 0,
|
||||
"GradeType": "Amature",
|
||||
"CreatorPoint": cp,
|
||||
"CreatedAt": created_at,
|
||||
"UpdatedAt": created_at,
|
||||
}
|
||||
|
||||
ret = account_collection.insert_one(account_doc)
|
||||
print("Account: " + str(ret))
|
||||
|
||||
pass
|
||||
|
||||
|
||||
def insert_fake_quest_tasks(ugq_db, quest_content_id):
|
||||
pass
|
||||
|
||||
|
||||
def insert_fake_quest_content(ugq_db):
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
# quest_content_collection.drop()
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
accounts = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
accounts.append({
|
||||
"UserGuid": document["UserGuid"],
|
||||
"Nickname": document["Nickname"]
|
||||
})
|
||||
|
||||
fake_en = Faker('en_US')
|
||||
fake_kr = Faker('ko_KR')
|
||||
fake_jp = Faker('ja_JP')
|
||||
for account in accounts:
|
||||
|
||||
create_count = random.randrange(1, 3)
|
||||
for i in range(create_count):
|
||||
|
||||
created_at = random_datetime()
|
||||
|
||||
quest_id = get_next_quest_id(ugq_db)
|
||||
revision = random.randrange(1, 1000)
|
||||
cost = random.randrange(100, 5000)
|
||||
|
||||
beacon_id = random.randrange(1001, 1059)
|
||||
|
||||
randValue = random.randrange(0, len(QuestContentState))
|
||||
state = QuestContentState(randValue).name
|
||||
if randValue == 0:
|
||||
state = "None"
|
||||
|
||||
quest_content_doc = {
|
||||
"UserGuid": account["UserGuid"],
|
||||
"Author": account["Nickname"],
|
||||
"GradeType": "Amature",
|
||||
"QuestId": quest_id,
|
||||
"Revision": revision,
|
||||
"BeaconId": beacon_id,
|
||||
"Title": {
|
||||
"Kr": fake_kr.company(),
|
||||
"En": fake_en.company(),
|
||||
"Jp": fake_jp.company(),
|
||||
},
|
||||
"Langs": ["en", "kr", "jp"],
|
||||
"UploadCounter": 0,
|
||||
"TitleImagePath": "",
|
||||
"BannerImagePath": "",
|
||||
"Description": {
|
||||
"Kr": fake_kr.catch_phrase(),
|
||||
"En": fake_en.catch_phrase(),
|
||||
"Jp": fake_jp.catch_phrase(),
|
||||
},
|
||||
"State": "Live",
|
||||
"Cost": cost,
|
||||
"Tasks": [],
|
||||
"CreatedAt": created_at,
|
||||
"UpdatedAt": created_at,
|
||||
"IsDeleted": False,
|
||||
"DeletedAt": datetime.datetime(1, 1, 1)
|
||||
}
|
||||
|
||||
# print(quest_content_doc)
|
||||
ret = quest_content_collection.insert_one(quest_content_doc)
|
||||
print("QuestContent: " + str(ret))
|
||||
# for account in accounts:
|
||||
|
||||
|
||||
def insert_fake_like(ugq_db):
|
||||
|
||||
like_collection = ugq_db.get_collection("Like")
|
||||
# like_collection.drop()
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append(document["QuestId"])
|
||||
|
||||
for user_guid in user_guids:
|
||||
|
||||
quest_ids_copy = quest_ids.copy()
|
||||
random.shuffle(quest_ids_copy)
|
||||
|
||||
count = random.randrange(1, len(quest_ids_copy))
|
||||
|
||||
for i in range(count):
|
||||
|
||||
created_at = random_datetime()
|
||||
|
||||
like_doc = {
|
||||
"QuestId": quest_ids_copy[i],
|
||||
"UserGuid": user_guid,
|
||||
"CreatedAt": created_at,
|
||||
}
|
||||
|
||||
ret = like_collection.insert_one(like_doc)
|
||||
print("Like: " + str(ret))
|
||||
# for i in range(count):
|
||||
|
||||
# for user_guid in user_guids:
|
||||
|
||||
|
||||
def insert_fake_bookmark(ugq_db):
|
||||
|
||||
bookmark_collection = ugq_db.get_collection("Bookmark")
|
||||
# bookmark_collection.drop()
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append(document["QuestId"])
|
||||
|
||||
for user_guid in user_guids:
|
||||
|
||||
quest_ids_copy = quest_ids.copy()
|
||||
random.shuffle(quest_ids_copy)
|
||||
|
||||
count = random.randrange(1, len(quest_ids_copy))
|
||||
|
||||
for i in range(count):
|
||||
|
||||
created_at = random_datetime()
|
||||
|
||||
bookmark_doc = {
|
||||
"QuestId": quest_ids_copy[i],
|
||||
"UserGuid": user_guid,
|
||||
"CreatedAt": created_at,
|
||||
}
|
||||
|
||||
ret = bookmark_collection.insert_one(bookmark_doc)
|
||||
print("Bookmark: " + str(ret))
|
||||
# for i in range(count):
|
||||
|
||||
# for user_guid in user_guids:
|
||||
|
||||
|
||||
def insert_fake_creator_point_history(ugq_db):
|
||||
|
||||
cp_history_collection = ugq_db.get_collection("CreatorPointHistory")
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append({
|
||||
"questId": document["QuestId"],
|
||||
"revision": document["Revision"],
|
||||
})
|
||||
|
||||
for user_guid in user_guids:
|
||||
count = random.randrange(1, 100)
|
||||
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
randValue = random.randrange(1, len(CreatorPointHistoryKind))
|
||||
kind = CreatorPointHistoryKind(randValue).name
|
||||
|
||||
amount = 0
|
||||
if kind == "QuestProfit":
|
||||
amount = random.randrange(1, 5000)
|
||||
else:
|
||||
amount = -random.randrange(1, 5000)
|
||||
|
||||
randValue = random.randrange(0, len(quest_ids) - 1)
|
||||
questId = quest_ids[randValue]["questId"]
|
||||
revision = quest_ids[randValue]["revision"]
|
||||
|
||||
cp_history_doc = {
|
||||
"UserGuid": user_guid,
|
||||
"QuestId": questId,
|
||||
"Revision": revision,
|
||||
"Kind": kind,
|
||||
"DetailReason": "",
|
||||
"Amount": amount,
|
||||
"TotalAmount": amount,
|
||||
"CreatedAt": created_at
|
||||
}
|
||||
|
||||
ret = cp_history_collection.insert_one(cp_history_doc)
|
||||
print("CreatorPointHistory: " + str(ret))
|
||||
# for i in range(count):
|
||||
# for user_guid in user_guids:
|
||||
pass
|
||||
|
||||
def insert_fake_quest_accepted(ugq_db):
|
||||
|
||||
quest_accepted_collection = ugq_db.get_collection("QuestAccepted")
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append({
|
||||
"questId": document["QuestId"],
|
||||
"revision": document["Revision"],
|
||||
})
|
||||
|
||||
for user_guid in user_guids:
|
||||
count = random.randrange(1, 100)
|
||||
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
randValue = random.randrange(0, len(quest_ids) - 1)
|
||||
questId = quest_ids[randValue]["questId"]
|
||||
revision = quest_ids[randValue]["revision"]
|
||||
|
||||
accepted_doc = {
|
||||
"QuestId": questId,
|
||||
"Revision": revision,
|
||||
"UserGuid": user_guid,
|
||||
"Reason": "Player",
|
||||
"CreatedAt": created_at
|
||||
}
|
||||
|
||||
ret = quest_accepted_collection.insert_one(accepted_doc)
|
||||
print("QuestAccepted: " + str(ret))
|
||||
# for i in range(count):
|
||||
# for user_guid in user_guids:
|
||||
pass
|
||||
|
||||
def insert_fake_quest_aborted(ugq_db):
|
||||
|
||||
quest_aborted_collection = ugq_db.get_collection("QuestAborted")
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append({
|
||||
"questId": document["QuestId"],
|
||||
"revision": document["Revision"],
|
||||
})
|
||||
|
||||
for user_guid in user_guids:
|
||||
count = random.randrange(1, 100)
|
||||
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
randValue = random.randrange(0, len(quest_ids) - 1)
|
||||
questId = quest_ids[randValue]["questId"]
|
||||
revision = quest_ids[randValue]["revision"]
|
||||
|
||||
aborted_doc = {
|
||||
"QuestId": questId,
|
||||
"Revision": revision,
|
||||
"UserGuid": user_guid,
|
||||
"Reason": "Player",
|
||||
"CreatedAt": created_at
|
||||
}
|
||||
|
||||
ret = quest_aborted_collection.insert_one(aborted_doc)
|
||||
print("QuestAborted: " + str(ret))
|
||||
# for i in range(count):
|
||||
# for user_guid in user_guids:
|
||||
pass
|
||||
|
||||
def insert_fake_quest_completed(ugq_db):
|
||||
|
||||
quest_completed_collection = ugq_db.get_collection("QuestCompleted")
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append({
|
||||
"questId": document["QuestId"],
|
||||
"revision": document["Revision"],
|
||||
})
|
||||
|
||||
for user_guid in user_guids:
|
||||
count = random.randrange(1, 100)
|
||||
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
randValue = random.randrange(0, len(quest_ids) - 1)
|
||||
questId = quest_ids[randValue]["questId"]
|
||||
revision = quest_ids[randValue]["revision"]
|
||||
|
||||
completed_doc = {
|
||||
"QuestId": questId,
|
||||
"Revision": revision,
|
||||
"UserGuid": user_guid,
|
||||
"CreatedAt": created_at
|
||||
}
|
||||
|
||||
ret = quest_completed_collection.insert_one(completed_doc)
|
||||
print("QuestCompleted: " + str(ret))
|
||||
# for i in range(count):
|
||||
# for user_guid in user_guids:
|
||||
pass
|
||||
|
||||
def insert_fake_report(ugq_db):
|
||||
|
||||
report_collection = ugq_db.get_collection("Report")
|
||||
|
||||
account_collection = ugq_db.get_collection("Account")
|
||||
user_guids = []
|
||||
cursor = account_collection.find({})
|
||||
for document in cursor:
|
||||
user_guids.append(document["UserGuid"])
|
||||
|
||||
quest_content_collection = ugq_db.get_collection("QuestContent")
|
||||
quest_ids = []
|
||||
cursor = quest_content_collection.find({})
|
||||
for document in cursor:
|
||||
quest_ids.append({
|
||||
"questId": document["QuestId"],
|
||||
"revision": document["Revision"],
|
||||
})
|
||||
|
||||
for user_guid in user_guids:
|
||||
count = random.randrange(1, 100)
|
||||
|
||||
for i in range(count):
|
||||
created_at = random_datetime()
|
||||
|
||||
randValue = random.randrange(0, len(quest_ids) - 1)
|
||||
questId = quest_ids[randValue]["questId"]
|
||||
revision = quest_ids[randValue]["revision"]
|
||||
|
||||
report_doc = {
|
||||
"QuestId": questId,
|
||||
"Revision": revision,
|
||||
"UserGuid": user_guid,
|
||||
"Content": "신고고고곡",
|
||||
"CreatedAt": created_at
|
||||
}
|
||||
|
||||
ret = report_collection.insert_one(report_doc)
|
||||
print("Report: " + str(ret))
|
||||
# for i in range(count):
|
||||
# for user_guid in user_guids:
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
conn_string = "mongodb://root:root@127.0.0.1:27017"
|
||||
|
||||
client = MongoClient(conn_string)
|
||||
|
||||
ugq_db = client['UGQ']
|
||||
|
||||
drop_all()
|
||||
init()
|
||||
|
||||
insert_fake_account(ugq_db, 100)
|
||||
insert_fake_quest_content(ugq_db)
|
||||
|
||||
insert_fake_like(ugq_db)
|
||||
insert_fake_bookmark(ugq_db)
|
||||
|
||||
insert_fake_creator_point_history(ugq_db)
|
||||
insert_fake_quest_accepted(ugq_db)
|
||||
insert_fake_quest_aborted(ugq_db)
|
||||
insert_fake_quest_completed(ugq_db)
|
||||
insert_fake_report(ugq_db)
|
||||
|
||||
Reference in New Issue
Block a user