From 2ab3cae23efe31dc4a356208ee08c2381d184d12 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Fri, 1 Nov 2024 10:32:49 -0400 Subject: [PATCH 1/2] feat: add ability to customize model and table name --- config/socialment.php | 8 +++++++- .../create_connected_accounts_table.php.stub | 2 +- src/Models/ConnectedAccount.php | 12 ++++++++++++ src/Traits/HasConnectedAccounts.php | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/config/socialment.php b/config/socialment.php index 445f1bc..3f41347 100644 --- a/config/socialment.php +++ b/config/socialment.php @@ -40,8 +40,14 @@ ], 'models' => [ + // If you want to use a custom connected_account model, you can specify it here. + 'connected_account' => \ChrisReedIO\Socialment\Models\ConnectedAccount::class, + // If you want to use a custom user model, you can specify it here. - 'user' => '\App\Models\User', + 'user' => \App\Model\User::class, ], + // The table name for the connected_accounts table + 'table_name' => 'connected_accounts', + ]; diff --git a/database/migrations/create_connected_accounts_table.php.stub b/database/migrations/create_connected_accounts_table.php.stub index 149623d..7326e6d 100644 --- a/database/migrations/create_connected_accounts_table.php.stub +++ b/database/migrations/create_connected_accounts_table.php.stub @@ -8,7 +8,7 @@ return new class extends Migration { public function up() { - Schema::create('connected_accounts', function (Blueprint $table) { + Schema::create(config('socialment.table_name', 'connected_accounts'), function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); diff --git a/src/Models/ConnectedAccount.php b/src/Models/ConnectedAccount.php index c6618fa..bface4a 100644 --- a/src/Models/ConnectedAccount.php +++ b/src/Models/ConnectedAccount.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Facades\Config; /** * @property string $provider @@ -32,6 +33,17 @@ class ConnectedAccount extends Model 'expires_at', ]; + public function __construct(array $attributes = []) + { + $config = Config::get('socialment'); + + if (isset($config['table_name'])) { + $this->setTable($config['table_name']); + } + + parent::__construct($attributes); + } + public function user(): BelongsTo { return $this->belongsTo(config('socialment.models.user')); diff --git a/src/Traits/HasConnectedAccounts.php b/src/Traits/HasConnectedAccounts.php index 7a8b715..2383b16 100644 --- a/src/Traits/HasConnectedAccounts.php +++ b/src/Traits/HasConnectedAccounts.php @@ -9,6 +9,6 @@ trait HasConnectedAccounts { public function connectedAccounts(): HasMany { - return $this->hasMany(ConnectedAccount::class); + return $this->hasMany(config('socialment.models.connected_account', ConnectedAccount::class)); } } From 95569efc667c4d4a4cd1efd4595a478fde750466 Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Tue, 28 Jan 2025 08:30:50 -0500 Subject: [PATCH 2/2] Update config/socialment.php --- config/socialment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/socialment.php b/config/socialment.php index 3f41347..758e707 100644 --- a/config/socialment.php +++ b/config/socialment.php @@ -44,7 +44,7 @@ 'connected_account' => \ChrisReedIO\Socialment\Models\ConnectedAccount::class, // If you want to use a custom user model, you can specify it here. - 'user' => \App\Model\User::class, + 'user' => '\App\Models\User', ], // The table name for the connected_accounts table