<?php

namespace Planaday\Database\MySQL;

use Planaday\Database\Abstraction\SQLQuery\ColumnTypeMap;

class MySQLColumnTypeMap implements ColumnTypeMap{

	//DataTypes
	public function UUID(): string {
        return 'CHAR(36)';
    }
	public function HASH(): string {
        return 'CHAR(64)';
    }
	public function LAST_UPDATED_TIMESTAMP(): string {
        return 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP';
    }
	public function CREATION_TIMESTAMP(): string {
        return 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP';
    }
	public function PRICE(): string {
        return 'DECIMAL(12,4)';
    }
	public function TAX(): string {
        return 'DOUBLE';
    }
	public function DATE(): string {
        return 'DATE';
    }
	public function DATETIME(): string {
        return 'DATETIME';
    }
	public function TIME(): string {
        return 'TIME';
    }
	public function TEXT(): string {
        return 'TEXT';
    }
	public function BOOLEAN(): string {
        return 'BOOL';
    }
	public function ID(): string {
        return 'INT(11)';
    }
	public function STRING_ID(): string {
		return 'VARCHAR(36)';
	}
	public function NAME(): string {
        return 'VARCHAR(255)';
    }
	public function STATUS(): string {
        return 'VARCHAR(255)';
    }
	public function DESCRIPTION(): string {
        return 'TEXT';
    }
	public function REMARK(): string {
        return 'TEXT';
    }
	public function AVAILABILITY_COUNT(): string {
        return 'INT';
    }
	public function CODE(): string {
        return 'VARCHAR(48)';
    }
	public function LABELS(): string {
        return 'TEXT';
    }
	public function STREET(): string {
        return 'VARCHAR(60)';
    }
	public function HOUSE_NUMBER(): string {
        return 'VARCHAR(12)';
    }
	public function HOUSE_NUMBER_EXTENSION(): string {
        return 'VARCHAR(6)';
    }
	public function ZIPCODE(): string {
        return 'VARCHAR(12)';
    }
	public function CITY(): string {
        return 'VARCHAR(56)';
    }
	public function COUNTRY(): string {
        return 'VARCHAR(46)';
    }
	public function COORDINATES(): string {
        return 'VARCHAR(24)';
    }
	public function PHONE_NUMBER(): string {
        return 'VARCHAR(14)';
    }
	public function EMAIL(): string {
        return 'VARCHAR(100)';
    }
	public function WEBSITE(): string {
        return 'VARCHAR(100)';
    }


	//Modifiers
	public function AUTO_INCREMENT(): string {
        return 'AUTO_INCREMENT';
    }
	public function PRIMARY_KEY(): string {
        return 'PRIMARY KEY';
    }
	public function FOREIGN_KEY(): string {
        return 'FOREIGN KEY';
    }
	public function NOT_NULL(): string {
        return 'NOT NULL';
    }
	public function DEFAULT_NULL(): string {
        return 'DEFAULT NULL';
    }
}