# Migrations

# Introduction

Migrations are typically paired with Kasfy's schema builder to build your application's database schema. If you have ever had to tell a teammate to manually add a column to their local database schema, you've faced the problem that database migrations solve.

# Generating Migrations


    kasfy make:migration users

# Migration Structure

{
    "name": "users", //This key represending table name
    "primary": "id", // Auto initializing primary key as id
    "fields": { // Set you want field names and types
        "name": "varchar(255) NOT NULL",
        "email": "varchar(255) NOT NULL UNIQUE",
        "password" : "varchar(255)"
    }
}

# Running Migrations


    kasfy migrate
    

Drop tables and re-migrate


    kasfy migrate:fresh

# String data types

CHAR(size): A FIXED length string (can contain letters, numbers, and special characters). The size parameter specifies the column length in characters - can be from 0 to 255. Default is 1

VARCHAR(size): A VARIABLE length string (can contain letters, numbers, and special characters). The size parameter specifies the maximum column length in characters - can be from 0 to 65535

BINARY(size): Equal to CHAR(), but stores binary byte strings. The size parameter specifies the column length in bytes. Default is 1

VARBINARY(size): Equal to VARCHAR(), but stores binary byte strings. The size parameter specifies the maximum column length in bytes.

TINYBLOB: For BLOBs (Binary Large OBjects). Max length: 255 bytes

TINYTEXT: Holds a string with a maximum length of 255 characters

TEXT(size): Holds a string with a maximum length of 65,535 bytes

BLOB(size): For BLOBs (Binary Large OBjects). Holds up to 65,535 bytes of data

MEDIUMTEXT: Holds a string with a maximum length of 16,777,215 characters

MEDIUMBLOB: For BLOBs (Binary Large OBjects). Holds up to 16,777,215 bytes of data

LONGTEXT: Holds a string with a maximum length of 4,294,967,295 characters

LONGBLOB: For BLOBs (Binary Large OBjects). Holds up to 4,294,967,295 bytes of data

# Numeric data types:

BIT(size): A bit-value type. The number of bits per value is specified in size. The size parameter can hold a value from 1 to 64. The default value for size is 1.

TINYINT(size): A very small integer. Signed range is from -128 to 127. Unsigned range is from 0 to 255. The size parameter specifies the maximum display width (which is 255)

BOOL: Zero is considered as false, nonzero values are considered as true. BOOLEAN Equal to BOOL

SMALLINT(size): A small integer. Signed range is from -32768 to 32767. Unsigned range is from 0 to 65535. The size parameter specifies the maximum display width (which is 255)

MEDIUMINT(size): A medium integer. Signed range is from -8388608 to 8388607. Unsigned range is from 0 to 16777215. The size parameter specifies the maximum display width (which is 255)

INT(size): A medium integer. Signed range is from -2147483648 to 2147483647. Unsigned range is from 0 to 4294967295. The size parameter specifies the maximum display width (which is 255)

INTEGER(size): Equal to INT(size)

BIGINT(size): A large integer. Signed range is from -9223372036854775808 to 9223372036854775807. Unsigned range is from 0 to 18446744073709551615. The size parameter specifies the maximum display width (which is 255)

FLOAT(size, d): A floating point number. The total number of digits is specified in size. The number of digits after the decimal point is specified in the d parameter. This syntax is deprecated in MySQL 8.0.17, and it will be removed in future MySQL versions

FLOAT(p): A floating point number. MySQL uses the p value to determine whether to use FLOAT or DOUBLE for the resulting data type. If p is from 0 to 24, the data type becomes FLOAT(). If p is from 25 to 53, the data type becomes DOUBLE()

DOUBLE(size, d): A normal-size floating point number. The total number of digits is specified in size. The number of digits after the decimal point is specified in the d parameter

DECIMAL(size, d): An exact fixed-point number. The total number of digits is specified in size. The number of digits after the decimal point is specified in the d parameter. The maximum number for size is 65. The maximum number for d is 30. The default value for size is 10. The default value for d is 0.

DEC(size, d): Equal to DECIMAL(size,d)

# Date and Time data types:

DATE: A date. Format: YYYY-MM-DD. The supported range is from '1000-01-01' to '9999-12-31'

DATETIME(fsp): A date and time combination. Format: YYYY-MM-DD hh:mm:ss. The supported range is from '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. Adding DEFAULT and ON UPDATE in the column definition to get automatic initialization and updating to the current date and time

TIMESTAMP(fsp): A timestamp. TIMESTAMP values are stored as the number of seconds since the Unix epoch ('1970-01-01 00:00:00' UTC). Format: YYYY-MM-DD hh:mm:ss. The supported range is from '1970-01-01 00:00:01' UTC to '2038-01-09 03:14:07' UTC. Automatic initialization and updating to the current date and time can be specified using DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP in the column definition

TIME(fsp): A time. Format: hh:mm:ss. The supported range is from '-838:59:59' to '838:59:59'

YEAR: A year in four-digit format. Values allowed in four-digit format: 1901 to 2155, and 0000.







This page is open source. Noticed a typo or something's unclear? Improve this page on GitHub