Indexes for performance improvements, improved FTN regex
This commit is contained in:
parent
5334b7d615
commit
702c5fb4f2
@ -271,7 +271,7 @@ class SystemController extends Controller
|
||||
return redirect()->action([self::class,'home']);
|
||||
}
|
||||
|
||||
$o->load(['addresses.zone.domain']);
|
||||
$o->load(['addresses.zone.domain','addresses.system','sessions.domain','sessions.systems']);
|
||||
|
||||
return view('system.addedit')
|
||||
->with('action',$o->exists ? 'update' : 'create')
|
||||
|
@ -32,6 +32,9 @@ class Address extends Model
|
||||
|
||||
protected $with = ['zone'];
|
||||
|
||||
// http://ftsc.org/docs/frl-1028.002
|
||||
public const ftn_regex = '([0-9]+):([0-9]+)/([0-9]+)(\.([0-9]+))?(@([a-z0-9\-_~]{0,8}))?';
|
||||
|
||||
public const NODE_ZC = 1<<0; // Zone
|
||||
public const NODE_RC = 1<<1; // Region
|
||||
public const NODE_NC = 1<<2; // Host
|
||||
@ -513,6 +516,7 @@ class Address extends Model
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Parse a string and split it out as an FTN array
|
||||
*
|
||||
* @param string $ftn
|
||||
@ -521,8 +525,7 @@ class Address extends Model
|
||||
*/
|
||||
public static function parseFTN(string $ftn): array
|
||||
{
|
||||
// http://ftsc.org/docs/frl-1028.002
|
||||
if (! preg_match('#^([0-9]+):([0-9]+)/([0-9]+)(.([0-9]+))?(@([a-z0-9\-_~]{0,8}))?$#',strtolower($ftn),$matches))
|
||||
if (! preg_match(sprintf('#^%s$#',self::ftn_regex),strtolower($ftn),$matches))
|
||||
throw new Exception('Invalid FTN: '.$ftn);
|
||||
|
||||
// Check our numbers are correct.
|
||||
|
47
database/migrations/2022_10_23_092332_seenby_index.php
Normal file
47
database/migrations/2022_10_23_092332_seenby_index.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('echomail_seenby', function (Blueprint $table) {
|
||||
$table->index(['echomail_id','address_id']);
|
||||
$table->index(['packet']);
|
||||
$table->index(['sent_at']);
|
||||
$table->index(['export_at']);
|
||||
});
|
||||
|
||||
Schema::table('echomails', function (Blueprint $table) {
|
||||
$table->index(['msgid']);
|
||||
$table->index(['replyid']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('echomails', function (Blueprint $table) {
|
||||
$table->dropIndex(['msgid']);
|
||||
$table->dropIndex(['replyid']);
|
||||
});
|
||||
Schema::table('echomail_seenby', function (Blueprint $table) {
|
||||
$table->dropIndex(['packet']);
|
||||
$table->dropIndex(['sent_at']);
|
||||
$table->dropIndex(['export_at']);
|
||||
$table->dropIndex(['echomail_id','address_id']);
|
||||
});
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user