<?php
namespace DatabaseHelper;

class Database
{
    /**
     * Creates a new TableBlueprint instance for the specified table name.
     * @param string $tableName The name of the table to create.
     * @return Table instance supporting method chaining
     */
    public static function makeTable(string $tableName): Table {
        return new Table($tableName);
    }

    public static function makeMigration(Schema $table): Migration {
        // TODO: Implement makeMigration() method.
    }

    /**
     * Creates a new QueryBuilder instance for the specified table.
     * @param Schema $table The table to query on.
     * @return Query instance supporting method chaining.
     */
    public static function makeQuery(Schema $table): Query {
        return new Query($table);
    }


    public static function makeDeletion(Schema $table): Deletion {
        // TODO: Implement makeDeletion() method.
    }

    public static function makeInsertion(Schema $table): Insertion {
        return new Insertion($table);
    }

    public static function makeUpdate(Schema $table): Update {
        return new Update($table);
    }

    /**
     * Adds the WordPress database prefix to table names if not already present.
     * @param string ...$tableName Array of table names to process
     * @return void
     */
    public static function standardizeTableNames(string &...$tableName): void {
        global $wpdb;
        $dbPrefix = $wpdb->prefix;

        foreach ($tableName as &$name)
            if (!str_starts_with($name, $dbPrefix))
                $name = $dbPrefix . $name;
    }
}