Skip to content

Commit

Permalink
FIXED TIMESTAMP
Browse files Browse the repository at this point in the history
  • Loading branch information
hind-sagar-biswas committed Mar 4, 2024
1 parent c2d49af commit 593c507
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 8 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ $usersTable = Table::create('users')->columns([
$query = $usersTable->build();

// Resulting SQL query
// CREATE TABLE IF NOT EXISTS users (`id` INT(11) UNSIGNED NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `is_superadmin` INT(2) NOT NULL DEFAULT '0', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIME, `update_time` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIME, CONSTRAINT users_PK PRIMARY KEY (id), CONSTRAINT username_UC UNIQUE (`username`), CONSTRAINT email_UC UNIQUE (`email`)) ENGINE = InnoDB;
// CREATE TABLE IF NOT EXISTS users (`id` INT(11) UNSIGNED NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `is_superadmin` INT(2) NOT NULL DEFAULT '0', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT users_PK PRIMARY KEY (id), CONSTRAINT username_UC UNIQUE (`username`), CONSTRAINT email_UC UNIQUE (`email`)) ENGINE = InnoDB;
```

#### With Foreign Keys
Expand Down
2 changes: 1 addition & 1 deletion src/Table/Traits/DefaultValue.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public function default(DefaultVal|string|null $default): self
}

if ($default == DefaultVal::NULL) $this->nullable();
$this->default = $default->name;
$this->default = $default->value;

return $this;
}
Expand Down
8 changes: 4 additions & 4 deletions tests/Column/DateTimeColumnTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ public function test_date_column_build()
$expected = "`column` DATE NOT NULL";
$query = Col::date()->build('column');
$this->assertSame($expected, $query);

// Nullable DATE column
$expected = "`column` DATE NULL";
$query = Col::date()->nullable()->build('column');
$this->assertSame($expected, $query);
}

public function test_datetime_column_build()
{
// Basic DATETIME column
Expand All @@ -33,8 +33,8 @@ public function test_datetime_column_build()
$query = Col::dateTime()->setOnUpdate()->build('column');
$this->assertSame($expected, $query);

// DATETIME column with default CURRENT_TIME
$expected = "`column` DATETIME NOT NULL DEFAULT CURRENT_TIME";
// DATETIME column with DEFAULT CURRENT_TIMESTAMP
$expected = "`column` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP";
$query = Col::dateTime()->default(DefaultVal::CURRENT_TIME)->build('column');
$this->assertSame($expected, $query);

Expand Down
24 changes: 22 additions & 2 deletions tests/Column/FullTableTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ final class FullTableTest extends TestCase
{
public function test_basic_users_table_build()
{
$expected = "CREATE TABLE IF NOT EXISTS users (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `is_superadmin` INT(2) NOT NULL DEFAULT '0', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIME, `update_time` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIME, CONSTRAINT users_PK PRIMARY KEY (id), CONSTRAINT username_UNQ UNIQUE (`username`), CONSTRAINT email_UNQ UNIQUE (`email`)) ENGINE = InnoDB;";
$expected = "CREATE TABLE IF NOT EXISTS users (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `is_superadmin` INT(2) NOT NULL DEFAULT '0', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT users_PK PRIMARY KEY (id), CONSTRAINT username_UNQ UNIQUE (`username`), CONSTRAINT email_UNQ UNIQUE (`email`)) ENGINE = InnoDB;";

$query = Table::create('users')->columns([
'id' => Col::integer(11)->unsigned()->ai()->pk(),
Expand Down Expand Up @@ -143,7 +143,7 @@ public function test_table_with_foreign_keys_column_does_not_exist_on_target_exc
$query = $table->build();
}

public function test_table_with_foreign_keys_column_incompitable_for_type_exception()
public function test_table_with_foreign_keys_column_incompatible_for_type_exception()
{
$this->expectException(Exception::class);

Expand All @@ -167,4 +167,24 @@ public function test_table_with_foreign_keys_column_incompitable_for_type_except

$query = $table->build();
}


public function test_table_real_life_scenario()
{
$expected = "CREATE TABLE IF NOT EXISTS tests (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `uid` VARCHAR(32) NOT NULL, `receipt_id` INT(11) UNSIGNED NOT NULL, `article_title` VARCHAR(100) NULL DEFAULT NULL, `article_content` TEXT NULL DEFAULT NULL, `patient_name` VARCHAR(100) NULL DEFAULT NULL, `patient_age` VARCHAR(10) NULL DEFAULT NULL, `added_by` VARCHAR(100) NOT NULL DEFAULT 'admin', `last_edited_by` VARCHAR(100) NULL DEFAULT NULL, `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT tests_PK PRIMARY KEY (id), CONSTRAINT uid_UNQ UNIQUE (`uid`)) ENGINE = InnoDB;";
$query = Table::create('tests')->columns([
'id' => Col::integer(11)->unsigned()->ai()->pk(),
'uid' => Col::varchar(32)->unique(),
'receipt_id' => Col::integer(11)->unsigned(),
'article_title' => Col::varchar(100)->default(DefaultVal::NULL),
'article_content' => Col::text()->default(DefaultVal::NULL),
'patient_name' => Col::varchar(100)->default(DefaultVal::NULL),
'patient_age' => Col::varchar(10)->default(DefaultVal::NULL),
'added_by' => Col::varchar(100)->default('admin'),
'last_edited_by' => Col::varchar(100)->default(DefaultVal::NULL),
'date' => Col::dateTime()->default(DefaultVal::CURRENT_TIME),
])->build();

$this->assertSame($expected, $query);
}
}

0 comments on commit 593c507

Please sign in to comment.