Skip to content

Commit b15bd53

Browse files
Changes to other routes were made with importing helper function....
1 parent 648eadf commit b15bd53

6 files changed

Lines changed: 1268 additions & 103 deletions

File tree

src/database/article/django.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import datetime
2+
3+
from src.domain.article import Article
4+
5+
django = [
6+
Article(
7+
title="Uvod v Django 1",
8+
subtitle="Zakaj je Django še vedno pomemben leta 2025",
9+
content="Django je celostni Django framework, ki ga uporablja veliko podjetij za gradnjo robustnih aplikacij...",
10+
author="Danilo Jezernik",
11+
datum_vnosa=datetime.datetime.now(),
12+
).dict(by_alias=True),
13+
Article(
14+
title="Uvod v Django 2",
15+
subtitle="Zakaj je Django še vedno pomemben leta 2025",
16+
content="Django je celostni Django framework, ki ga uporablja veliko podjetij za gradnjo robustnih aplikacij...",
17+
author="Danilo Jezernik",
18+
datum_vnosa=datetime.datetime.now(),
19+
).dict(by_alias=True),
20+
Article(
21+
title="Uvod v Django 3",
22+
subtitle="Zakaj je Django še vedno pomemben leta 2025",
23+
content="Django je celostni Django framework, ki ga uporablja veliko podjetij za gradnjo robustnih aplikacij...",
24+
author="Danilo Jezernik",
25+
datum_vnosa=datetime.datetime.now(),
26+
).dict(by_alias=True),
27+
]

src/database/qa/django.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import datetime
2+
3+
from src.domain.language import Language
4+
5+
django = [
6+
Language(
7+
question='Django questions 1',
8+
answer='Django je framework, ki ga dela Google in je zelo priljubljen.',
9+
language='django',
10+
datum_vnosa=datetime.datetime.now(),
11+
).dict(by_alias=True),
12+
Language(
13+
question='Django questions 2',
14+
answer='Django je framework, ki ga dela Google in je zelo priljubljen.',
15+
language='django',
16+
datum_vnosa=datetime.datetime.now(),
17+
).dict(by_alias=True),
18+
Language(
19+
question='Django questions 3',
20+
answer='Django je framework, ki ga dela Google in je zelo priljubljen.',
21+
language='django',
22+
datum_vnosa=datetime.datetime.now(),
23+
).dict(by_alias=True)
24+
]

src/services/collections.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Technologies
2+
from src.database.qa.angular import angular as angular_qa
3+
from src.database.qa.javascript import javascript as javascript_qa
4+
from src.database.qa.mongodb import mongodb as mongodb_qa
5+
from src.database.qa.python import python as python_qa
6+
from src.database.qa.typescript import typescript as typescript_qa
7+
from src.database.qa.vue import vue as vue_qa
8+
from src.database.qa.cypress import cypress as cypress_qa
9+
from src.database.qa.django import django as django_qa
10+
11+
# Articles
12+
from src.database.article.angular import angular as angular_articles
13+
from src.database.article.javascript import javascript as javascript_articles
14+
from src.database.article.mongodb import mongodb as mongodb_articles
15+
from src.database.article.python import python as python_articles
16+
from src.database.article.typescript import typescript as typescript_articles
17+
from src.database.article.vue import vue as vue_articles
18+
from src.database.article.cypress import cypress as cypress_articles
19+
from src.database.article.django import django as django_articles
20+
21+
from src.database.sent_email_data import sent_email_data
22+
from src.database.blog import blog
23+
from src.database.book import book
24+
from src.database.contact import contact
25+
from src.database.experiences import experiences
26+
from src.database.links import links
27+
from src.database.projects import projects
28+
29+
collections = {
30+
# General
31+
"blog": blog,
32+
"sent_email_data": sent_email_data,
33+
"links": links,
34+
"experiences": experiences,
35+
"contact": contact,
36+
"projects": projects,
37+
"book": book,
38+
39+
# Technologies - QA
40+
"angular_qa": angular_qa,
41+
"vue_qa": vue_qa,
42+
"typescript_qa": typescript_qa,
43+
"javascript_qa": javascript_qa,
44+
"python_qa": python_qa,
45+
"mongodb_qa": mongodb_qa,
46+
"cypress_qa": cypress_qa,
47+
"django_qa": django_qa,
48+
49+
# Articles
50+
"angular_articles": angular_articles,
51+
"vue_articles": vue_articles,
52+
"typescript_articles": typescript_articles,
53+
"javascript_articles": javascript_articles,
54+
"python_articles": python_articles,
55+
"mongodb_articles": mongodb_articles,
56+
"cypress_articles": cypress_articles,
57+
"django_articles": django_articles,
58+
}

src/services/db.py

Lines changed: 62 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,84 @@
11
from pymongo import MongoClient
2-
32
from src import env
43

5-
# Technologies
6-
from src.database.qa.angular import angular as angular_qa
7-
from src.database.qa.javascript import javascript as javascript_qa
8-
from src.database.qa.mongodb import mongodb as mongodb_qa
9-
from src.database.qa.python import python as python_qa
10-
from src.database.qa.typescript import typescript as typescript_qa
11-
from src.database.qa.vue import vue as vue_qa
12-
from src.database.qa.cypress import cypress as cypress_qa
13-
14-
# Articles
15-
from src.database.article.angular import angular as angular_articles
16-
from src.database.article.javascript import javascript as javascript_articles
17-
from src.database.article.mongodb import mongodb as mongodb_articles
18-
from src.database.article.python import python as python_articles
19-
from src.database.article.typescript import typescript as typescript_articles
20-
from src.database.article.vue import vue as vue_articles
21-
from src.database.article.cypress import cypress as cypress_articles
22-
23-
from src.database.sent_email_data import sent_email_data
24-
from src.database.blog import blog
25-
from src.database.book import book
26-
from src.database.contact import contact
27-
from src.database.experiences import experiences
28-
from src.database.links import links
29-
from src.database.projects import projects
4+
# User data and all seedable collections
305
from src.database.user import user
6+
from src.services.collections import collections
317

32-
client = MongoClient(env.DB_MAIN)
33-
process = client[env.DB_PROCESS]
8+
# ---------------------------------------------------------------------------
9+
# Database client setup
10+
# ---------------------------------------------------------------------------
11+
client = MongoClient(env.DB_MAIN) # Connect to MongoDB instance
12+
process = client[env.DB_PROCESS] # Select the database
3413

35-
def drop():
36-
# Dev APIs
37-
process.dev_api_angular.drop()
38-
process.dev_api_vue.drop()
39-
process.dev_api_typescript.drop()
40-
process.dev_api_python.drop()
41-
process.dev_api_javascript.drop()
42-
process.dev_api_mongodb.drop()
4314

44-
# General
45-
process.blog.drop()
46-
process.sent_email_data.drop()
47-
process.message_reg.drop()
48-
process.links.drop()
49-
process.experiences.drop()
50-
process.contact.drop()
51-
process.projects.drop()
52-
process.subscriber.drop()
53-
process.comments.drop()
54-
process.book.drop()
15+
# ---------------------------------------------------------------------------
16+
# DROP FUNCTIONS
17+
# ---------------------------------------------------------------------------
18+
def drop():
19+
"""
20+
Drops all pre-defined collections in the `collections` dictionary and
21+
also clears special 'dev' and other standalone collections.
22+
"""
23+
# Drop Dev API collections (not part of the collections dict)
24+
special_dev_collections = [
25+
"dev_api_angular", "dev_api_vue", "dev_api_typescript",
26+
"dev_api_python", "dev_api_javascript", "dev_api_mongodb"
27+
]
5528

56-
# Technologies
57-
process.angular_qa.drop()
58-
process.vue_qa.drop()
59-
process.typescript_qa.drop()
60-
process.javascript_qa.drop()
61-
process.python_qa.drop()
62-
process.mongodb_qa.drop()
63-
process.cypress_qa.drop()
29+
for dev_collection in special_dev_collections:
30+
if dev_collection in process.list_collection_names():
31+
process[dev_collection].drop()
32+
print(f"Dropped special collection: {dev_collection}")
6433

65-
# Articles
66-
process.articles.drop()
67-
process.vue_articles.drop()
68-
process.typescript_articles.drop()
69-
process.javascript_articles.drop()
70-
process.python_articles.drop()
71-
process.mongodb_articles.drop()
72-
process.cypress_articles.drop()
34+
# Drop other standalone collections
35+
if "language_data" in process.list_collection_names():
36+
process.language_data.drop()
37+
print("Dropped special collection: language_data")
7338

74-
# Other
75-
process.language_data.drop()
76-
pass
39+
# Drop collections defined in `collections` dict
40+
for collection_name in collections.keys():
41+
if collection_name in process.list_collection_names():
42+
process[collection_name].drop()
43+
print(f"Dropped collection: {collection_name}")
7744

7845

7946
def drop_user():
80-
process.user.drop()
81-
pass
47+
"""
48+
Drops the user collection only.
49+
"""
50+
if "user" in process.list_collection_names():
51+
process.user.drop()
52+
print("Dropped user collection")
8253

8354

84-
def seed():
85-
# General
86-
process.blog.insert_many(blog)
87-
process.sent_email_data.insert_many(sent_email_data)
88-
process.links.insert_many(links)
89-
process.experiences.insert_many(experiences)
90-
process.contact.insert_many(contact)
91-
process.projects.insert_many(projects)
92-
process.book.insert_many(book)
55+
def drop_all_collections():
56+
"""
57+
Drops ALL collections in the database.
58+
Use with caution!
59+
"""
60+
for collection_name in process.list_collection_names():
61+
process[collection_name].drop()
62+
print(f"Dropped collection: {collection_name}")
9363

94-
# Technologies
95-
process.angular_qa.insert_many(angular_qa)
96-
process.vue_qa.insert_many(vue_qa)
97-
process.typescript_qa.insert_many(typescript_qa)
98-
process.javascript_qa.insert_many(javascript_qa)
99-
process.python_qa.insert_many(python_qa)
100-
process.mongodb_qa.insert_many(mongodb_qa)
101-
process.cypress_qa.insert_many(cypress_qa)
10264

103-
# Articles
104-
process.angular_articles.insert_many(angular_articles)
105-
process.vue_articles.insert_many(vue_articles)
106-
process.typescript_articles.insert_many(typescript_articles)
107-
process.javascript_articles.insert_many(javascript_articles)
108-
process.python_articles.insert_many(python_articles)
109-
process.mongodb_articles.insert_many(mongodb_articles)
110-
process.cypress_articles.insert_many(cypress_articles)
111-
pass
65+
# ---------------------------------------------------------------------------
66+
# SEED FUNCTIONS
67+
# ---------------------------------------------------------------------------
68+
def seed():
69+
"""
70+
Inserts seed data into all collections defined in the `collections` dict.
71+
"""
72+
for collection_name, data in collections.items():
73+
if data: # Only insert if seed data exists
74+
process[collection_name].insert_many(data)
75+
print(f"Seeded collection: {collection_name}")
11276

11377

11478
def seed_user():
115-
process.user.insert_many(user)
116-
pass
117-
118-
def drop_all_collections():
11979
"""
120-
Drops all collections in the database instead of the whole DB.
80+
Seeds the user collection with user data.
12181
"""
122-
for collection_name in process.list_collection_names():
123-
process[collection_name].drop()
82+
if user:
83+
process.user.insert_many(user)
84+
print("Seeded user collection")

src/services/routers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
javascript as qa_javascript,
1616
mongodb as qa_mongodb,
1717
vue as qa_vue,
18-
cypress as qa_cypress
18+
cypress as qa_cypress,
19+
django as qa_django,
1920
)
2021

2122
# Article routes for different technologies
@@ -26,7 +27,8 @@
2627
javascript as article_javascript,
2728
mongodb as article_mongodb,
2829
vue as article_vue,
29-
cypress as article_cypress
30+
cypress as article_cypress,
31+
django as article_django,
3032
)
3133

3234
# --------------------------------------------------------------------------
@@ -54,6 +56,7 @@
5456
(qa_python.router, '/qa/python', ['Python']),
5557
(qa_mongodb.router, '/qa/mongodb', ['MongoDB']),
5658
(qa_cypress.router, '/qa/cypress', ['Cypress']),
59+
(qa_django.router, '/qa/django', ['Django']),
5760

5861
# -------------------------
5962
# Technologies - Article routes (Articles per technology)
@@ -65,6 +68,7 @@
6568
(article_python.router, '/article/python', ['Python']),
6669
(article_mongodb.router, '/article/mongodb', ['MongoDB']),
6770
(article_cypress.router, '/article/cypress', ['Cypress']),
71+
(article_django.router, '/article/django', ['Django']),
6872

6973
# -------------------------
7074
# Language-related routes

0 commit comments

Comments
 (0)