Skip to content

eggseedd/f1-fantasy-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

F1 Fantasy CLI App 🏎️

A simple Python-based application to make custom F1 teams, including team principals, drivers, and engines using Microsoft SQL.

📌 Features

✅ Add new teams with team principal, drivers, and engine
✅ Edit team details
✅ Remove teams
✅ List all teams, team principals, drivers, and engine manufacturers
✅ Uses a relational database for data storage

🚀 Getting Started

1️⃣ Prerequisites

Make sure you have:

  • Python installed
  • A database (Microsoft SQL Server)

2️⃣ Installation

  1. Clone this repository:
git clone https://github.com/eggseedd/f1-fantasy-cli.git
cd f1-fantasy-cli
  1. Set up the database:
    • Ensure your database is running
    • Update database/db.py with your connection settings
    • Run the provided SQL schema and seed to create tables and insert the list of team principals, drivers, engines provided

3️⃣ Usage

Run the script:

python main.py

⚙️ Database Schema

Conceptual Data Model (CDM)

F1_Fantasy-2025-03-24_15-23

Physical Data Model (PDM)

F1_Fantasy_Physical_Export-2025-03-24_15-26

  • teams: Stores custom team names
  • drivers: Stores driver details
  • engines: Stores engine manufacturers
  • team_principals: Stores team principals

🛠️ Areas for Enhancement

🔄 Enhance team update handling for better experience
⚠️ Handle duplicate team names when updating team to prevent conflicts
🕵️‍♂️ Investigate why only drivers entity trigger an error when re-entering existing values

For ITS Software Engineering Lab Admins

1️⃣ Alasan dan Justifikasi Pemilihan Database

-Dibutuhkan ACID compliance karena ada beberapa tabel atau entitas yang harus memiliki ketetapan data.

Dibutuhkan ACID compliance, yang memastikan ketepatan dan integritas data antar tabel. Tabel seperti drivers, engines, dan team_principals berisi data tetap yang tidak dapat diubah oleh pengguna. Saat pengguna melakukan operasi CRUD, rollback akan dilakukan jika terjadi error, sehingga hubungan antar tabel tetap terjaga dan tidak ada data yang rusak atau inkonsisten.

-Query yang dijalankan cukup sederhana dan masih memiliki runtime yang cepat

Query yang digunakan hanya menggunakan operasi dasar seperti SELECT, WHERE, JOIN, dan lain-lain, sehingga tetap efisien. Dengan struktur database yang sederhana dan jumlah data yang relatif, SQL masih mampu menangani eksekusi query dengan runtime yang cepat.

-Data yang digunakan tidak bersifat dinamis.

Data dalam sistem ini tidak bersifat dinamis, karena atribut yang digunakan memiliki struktur yang tetap. Oleh karena itu, SQL database lebih sesuai dibanding NoSQL, yang lebih cocok untuk data yang bersifat fleksibel dan tidak memiliki skema tetap.

Oleh karena itu, saya memutuskan untuk menggunakan SQL (relational) database, Microsoft SQL.

2️⃣ Fitur dari Database yang Digunakan

-JOIN

models/teams.py (line 146-156)
image

-Rollback

models/teams.py (line 48-50, 72-74, 132-134)
image

image

image

About

F1 Fantasy CLI App

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages