53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use Illuminate\Database\Migrations\Migration;
 | 
						|
use Illuminate\Support\Facades\DB;
 | 
						|
use Illuminate\Support\Facades\File;
 | 
						|
 | 
						|
return new class extends Migration
 | 
						|
{
 | 
						|
    /** Path helper */
 | 
						|
    private function sql(string $file): string
 | 
						|
    {
 | 
						|
        return base_path("vendor/sabre/dav/examples/sql/{$file}");
 | 
						|
    }
 | 
						|
 | 
						|
    public function up(): void
 | 
						|
    {
 | 
						|
        // Disable FK checks for smooth batch execution
 | 
						|
        DB::statement('SET FOREIGN_KEY_CHECKS = 0');
 | 
						|
 | 
						|
        // Principals (users & groups)
 | 
						|
        DB::unprepared(File::get($this->sql('mysql.principals.sql')));
 | 
						|
 | 
						|
        // CalDAV calendars + objects
 | 
						|
        DB::unprepared(File::get($this->sql('mysql.calendars.sql')));
 | 
						|
 | 
						|
        // CardDAV address books + cards
 | 
						|
        DB::unprepared(File::get($this->sql('mysql.addressbooks.sql')));
 | 
						|
 | 
						|
        DB::statement('SET FOREIGN_KEY_CHECKS = 1');
 | 
						|
    }
 | 
						|
 | 
						|
    public function down(): void
 | 
						|
    {
 | 
						|
        DB::statement('SET FOREIGN_KEY_CHECKS = 0');
 | 
						|
 | 
						|
        // Drop in reverse dependency order
 | 
						|
        DB::statement('DROP TABLE IF EXISTS
 | 
						|
            cards_changes,
 | 
						|
            addressbooks_changes,
 | 
						|
            cards,
 | 
						|
            addressbooks,
 | 
						|
            schedulingobjects,
 | 
						|
            calendarchanges,
 | 
						|
            calendarobjects,
 | 
						|
            calendarinstances,
 | 
						|
            calendars,
 | 
						|
            groupmembers
 | 
						|
        ');
 | 
						|
 | 
						|
        DB::statement('SET FOREIGN_KEY_CHECKS = 1');
 | 
						|
    }
 | 
						|
};
 |