fix: Auto-seed official subjects table to satisfy foreign key constraints on courses creation
This commit is contained in:
@@ -7,6 +7,7 @@ use App\Core\Response;
|
|||||||
use App\Core\Database;
|
use App\Core\Database;
|
||||||
use App\Core\Security;
|
use App\Core\Security;
|
||||||
use App\Core\Validator;
|
use App\Core\Validator;
|
||||||
|
use App\Services\CurriculumService;
|
||||||
|
|
||||||
class TeacherController
|
class TeacherController
|
||||||
{
|
{
|
||||||
@@ -167,6 +168,7 @@ class TeacherController
|
|||||||
*/
|
*/
|
||||||
public function getCourses(Request $request, Response $response): void
|
public function getCourses(Request $request, Response $response): void
|
||||||
{
|
{
|
||||||
|
CurriculumService::ensureSchema();
|
||||||
$userId = (int)$request->user_id;
|
$userId = (int)$request->user_id;
|
||||||
|
|
||||||
$courses = Database::select(
|
$courses = Database::select(
|
||||||
|
|||||||
@@ -17,7 +17,23 @@ class CurriculumService
|
|||||||
if (self::$schemaChecked) return;
|
if (self::$schemaChecked) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Check if lessons table has timeline_chapters_json column
|
// 1. Check if subjects table has data, seed if empty
|
||||||
|
$subjectsCount = (int)(Database::selectOne("SELECT COUNT(*) as total FROM subjects")['total'] ?? 0);
|
||||||
|
if ($subjectsCount === 0) {
|
||||||
|
Database::query(
|
||||||
|
"INSERT INTO subjects (id, name, code, stream, is_active) VALUES
|
||||||
|
(1, 'الرياضيات العلمي', 'math_scientific', 'scientific', 1),
|
||||||
|
(2, 'الثقافة العسكرية والتربية الوطنية', 'military_culture', 'common', 1),
|
||||||
|
(3, 'الفيزياء', 'physics_scientific', 'scientific', 1),
|
||||||
|
(4, 'الكيمياء', 'chemistry_scientific', 'scientific', 1),
|
||||||
|
(5, 'العلوم الحياتية (الأحياء)', 'biology_scientific', 'scientific', 1),
|
||||||
|
(6, 'اللغة الإنجليزية', 'english_common', 'common', 1),
|
||||||
|
(7, 'اللغة العربية المشتركة', 'arabic_common', 'common', 1)
|
||||||
|
ON DUPLICATE KEY UPDATE name = VALUES(name)"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Check if lessons table has timeline_chapters_json column
|
||||||
$cols = Database::select("SHOW COLUMNS FROM lessons LIKE 'timeline_chapters_json'");
|
$cols = Database::select("SHOW COLUMNS FROM lessons LIKE 'timeline_chapters_json'");
|
||||||
if (empty($cols)) {
|
if (empty($cols)) {
|
||||||
Database::query("ALTER TABLE lessons ADD COLUMN timeline_chapters_json JSON NULL AFTER hls_url");
|
Database::query("ALTER TABLE lessons ADD COLUMN timeline_chapters_json JSON NULL AFTER hls_url");
|
||||||
|
|||||||
Reference in New Issue
Block a user