Files
portal-api/database/admin_zonedns_migration_preview.md
baodev0 fccb0c353a feat: Add DNS management resources and importer
- Implemented DomainCollection, DomainDetailResource, DomainNSCollection, DomainNSResource, and DomainResource for handling DNS domain and record data.
- Created VpsServiceCollection and VpsServiceResource for VPS service management.
- Added DnsManagerNS and DnsManagerUser models to represent DNS records and user associations.
- Developed AdminZoneDnsSqlImporter for importing DNS data from SQL dumps, including customer and DNS domain records.
- Added migration scripts to update the customers table with new fields and sync foreign key references for DNS tables.
- Created a migration preview document outlining the mapping and schema changes for the admin zone DNS import.
2026-05-26 13:54:33 +07:00

4.7 KiB

Preview: admin_zonedns -> customers

Nguon doi chieu

  • SQL dump: portal/admin_zonedns (1).sql
  • DB hien tai tu portal/.env: tgs_portal
  • Model doi chieu: portal/app/Models/Customer.php

Xac nhan mapping

  • tbl.users trong file SQL duoc map sang bang customers cua portal.
  • Vi vay, khong tao bang users moi trong portal.
  • Muc tieu la:
    • giu dns_domain_user, dns_manager_domain, dns_manager_ns
    • bo sung cac field con thieu cho customers
    • cap nhat Customer.php chi o phan replace/createUpdate

Ket qua doi chieu cac bang duoc yeu cau

Bang/nguon Trong SQL Trong DB tgs_portal Ket luan
users Co Khong Khong can tao, vi duoc map vao customers
customers Khong Co La bang dich de nhan schema tu tbl.users
dns_domain_users Khong Khong Dump va DB dang dung dns_domain_user
dns_domain_user Co Co Da ton tai
dns_manager_domain Co Co Da ton tai
dns_manager_ns Co Co Da ton tai

Lech schema hien tai

tbl.users trong SQL

id
name
username
email
email_verified_at
password
type
status
remember_token
created_at
updated_at

customers hien tai

id
uuid
fullname
avatar
gender
address
state
city
postcode
country
company
phone
email
email_verify
email_hash
email_marketing
receive_deposit
password
credit
total
total_pending
identity_number
front_identity_number
back_identity_number
province_code
ward_code
remember_token
status
created_at
updated_at
deleted_at

Field can bo sung vao customers tu tbl.users

Field tu SQL users Cach map vao customers Trang thai
name map vao fullname Da co, khong tao moi
username tao cot username Thieu
email giu email Da co
email_verified_at tao cot email_verified_at Thieu
password giu password Da co
type tao cot type Thieu
status giu status Da co
remember_token giu remember_token Da co
created_at giu created_at Da co
updated_at giu updated_at Da co

Lech schema cac bang DNS

dns_manager_domain

  • SQL dump:
    • id, domain_name, dns_manager_server_id, is_created, plesk_id, created_at, updated_at
  • DB hien tai:
    • co them user_id
  • Ket luan:
    • khong thieu bang
    • khong nen remove user_id

dns_manager_ns

  • SQL dump:
    • id, dns_manager_domain_id, name, type, service_name, protocol, priority, weight, port, value, plesk_id, ttl, created_at, updated_at
  • DB hien tai:
    • co them type_valid
  • Ket luan:
    • khong thieu bang
    • khong nen remove type_valid

dns_domain_user

  • SQL dump va DB hien tai deu dang dung dns_domain_user
  • Khong co bang dns_domain_users
  • Neu ban muon chuyen qua ten plural, can migration rieng

Preview migration cho customers

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    public function up(): void
    {
        Schema::table('customers', function (Blueprint $table) {
            if (! Schema::hasColumn('customers', 'username')) {
                $table->string('username', 50)->nullable()->after('fullname');
            }

            if (! Schema::hasColumn('customers', 'email_verified_at')) {
                $table->timestamp('email_verified_at')->nullable()->after('email');
            }

            if (! Schema::hasColumn('customers', 'type')) {
                $table->string('type')->default('guest')->after('password');
            }
        });
    }

    public function down(): void
    {
        Schema::table('customers', function (Blueprint $table) {
            if (Schema::hasColumn('customers', 'type')) {
                $table->dropColumn('type');
            }

            if (Schema::hasColumn('customers', 'email_verified_at')) {
                $table->dropColumn('email_verified_at');
            }

            if (Schema::hasColumn('customers', 'username')) {
                $table->dropColumn('username');
            }
        });
    }
};

Preview cap nhat Customer.php

Replace

  • Dung fullname thay cho users.name
  • Khong tao them cot name

Them vao $fillable

'username',
'email_verified_at',
'type',

Them vao $updatable

'username',

Tom tat sau khi duyet preview

  1. Khong tao bang users.
  2. Tao 1 migration add field vao customers: username, email_verified_at, type.
  3. Khong tao moi dns_domain_user, dns_manager_domain, dns_manager_ns.
  4. Chi cap nhat Customer.php o phan fillable/updatable va replace mapping name -> fullname.