karigor 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
karigor-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.4
2
+ Name: karigor
3
+ Version: 0.1.0
4
+ Summary: Karigor CLI for python project
5
+ Requires-Python: >=3.8
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: click>=8.0.0
8
+ Requires-Dist: SQLAlchemy>=2.0.0
File without changes
File without changes
@@ -0,0 +1,73 @@
1
+ import click
2
+ import os
3
+ from sqlalchemy import create_engine
4
+ from app.models import Base, DATABASE_URL
5
+
6
+ @click.group()
7
+ def cli():
8
+ """আমার পাইথন প্রজেক্টের কাস্টম আর্টিসান কমান্ড লাইন।"""
9
+ pass
10
+
11
+ # ==========================================
12
+ # ১. CONTROLLER তৈরি করার কমান্ড
13
+ # ==========================================
14
+ @cli.command(name="make:controller")
15
+ @click.argument('name')
16
+ def make_controller(name):
17
+ """একটি নতুন কন্ট্রোলার ক্লাস তৈরি করার কমান্ড।"""
18
+ folder_path = os.path.join("app", "controllers")
19
+
20
+ if not os.path.exists(folder_path):
21
+ os.makedirs(folder_path)
22
+
23
+ file_name = f"{name}Controller.py"
24
+ file_path = os.path.join(folder_path, file_name)
25
+
26
+ if os.path.exists(file_path):
27
+ click.secho(" ERROR ", fg="white", bg="red", bold=True, nl=False)
28
+ click.secho(f" Controller [{file_name}] already exists!", fg="red")
29
+ return
30
+
31
+ # কন্ট্রোলারের ভেতরের কোডের টেমপ্লেট
32
+ controller_template = f"""class {name}Controller:
33
+ def index(self):
34
+ return {{"message": "Welcome to {name}Controller"}}
35
+ """
36
+
37
+ with open(file_path, "w", encoding="utf-8") as f:
38
+ f.write(controller_template)
39
+
40
+ click.secho(" INFO ", fg="black", bg="green", bold=True, nl=False)
41
+ click.secho(f" Controller [app/controllers/{file_name}] created successfully.", fg="green")
42
+
43
+
44
+ # ==========================================
45
+ # ২. DATABASE MIGRATION রান করার কমান্ড
46
+ # ==========================================
47
+ @cli.command(name="migrate")
48
+ @click.option('--fresh', is_flag=True, help='পুরো ডেটাবেজ ডিলিট করে নতুন করে মাইগ্রেট করবে।')
49
+ def migrate(fresh):
50
+ """ডেটাবেজ মাইগ্রেশন রান করার কমান্ড।"""
51
+ engine = create_engine(DATABASE_URL)
52
+
53
+ if fresh:
54
+ click.secho(" WARN ", fg="black", bg="yellow", bold=True, nl=False)
55
+ click.secho(" Dropping all tables...", fg="yellow")
56
+ Base.metadata.drop_all(engine)
57
+
58
+ click.secho(" INFO ", fg="black", bg="green", bold=True, nl=False)
59
+ click.secho(" Running migrations...", fg="green")
60
+
61
+ # লারাভেলের মতো ফিল দেওয়ার জন্য প্রিন্ট
62
+ tables = Base.metadata.tables.keys()
63
+ for table in tables:
64
+ click.echo(f" ⇛ Migrating: create_{table}_table")
65
+
66
+ # আসল ডেটাবেজ টেবিল তৈরি করার কমান্ড
67
+ Base.metadata.create_all(engine)
68
+
69
+ for table in tables:
70
+ click.secho(f" ✔ Migrated: create_{table}_table", fg="green")
71
+
72
+ click.secho(" INFO ", fg="black", bg="green", bold=True, nl=False)
73
+ click.secho(" Database migration completed successfully.", fg="green")
@@ -0,0 +1,3 @@
1
+ class ProductController:
2
+ def index(self):
3
+ return {"message": "Welcome to ProductController"}
File without changes
@@ -0,0 +1,24 @@
1
+ # আগের ভুল লাইন: from sqlalchemy import create_backend, Column, Integer, String, DateTime
2
+ # পরিবর্তন করে নিচের লাইনটি লিখুন:
3
+ from sqlalchemy import Column, Integer, String, DateTime
4
+ from sqlalchemy.orm import declarative_base
5
+ import datetime
6
+
7
+ Base = declarative_base()
8
+ DATABASE_URL = "sqlite:///database.db"
9
+
10
+ # ইউজার টেবিল মডেল (টেস্ট করার জন্য)
11
+ class User(Base):
12
+ __tablename__ = 'users'
13
+
14
+ id = Column(Integer, primary_key=True)
15
+ name = Column(String(50), nullable=False)
16
+ email = Column(String(50), unique=True, nullable=False)
17
+ created_at = Column(DateTime, default=datetime.datetime.utcnow)
18
+
19
+ class Post(Base):
20
+ __tablename__ = 'posts'
21
+
22
+ id = Column(Integer, primary_key=True)
23
+ title = Column(String(100), nullable=False)
24
+ content = Column(String(500))
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.4
2
+ Name: karigor
3
+ Version: 0.1.0
4
+ Summary: Karigor CLI for python project
5
+ Requires-Python: >=3.8
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: click>=8.0.0
8
+ Requires-Dist: SQLAlchemy>=2.0.0
@@ -0,0 +1,13 @@
1
+ README.md
2
+ pyproject.toml
3
+ app/__init__.py
4
+ app/cli.py
5
+ app/models.py
6
+ app/controllers/ProductController.py
7
+ app/controllers/__init__.py
8
+ karigor.egg-info/PKG-INFO
9
+ karigor.egg-info/SOURCES.txt
10
+ karigor.egg-info/dependency_links.txt
11
+ karigor.egg-info/entry_points.txt
12
+ karigor.egg-info/requires.txt
13
+ karigor.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ artisan = app.cli:cli
@@ -0,0 +1,2 @@
1
+ click>=8.0.0
2
+ SQLAlchemy>=2.0.0
@@ -0,0 +1 @@
1
+ app
@@ -0,0 +1,17 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "karigor"
7
+ version = "0.1.0"
8
+ description = "Karigor CLI for python project"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ dependencies = [
12
+ "click>=8.0.0",
13
+ "SQLAlchemy>=2.0.0",
14
+ ]
15
+
16
+ [project.scripts]
17
+ artisan = "app.cli:cli"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+