36 lines
1.2 KiB
Markdown
36 lines
1.2 KiB
Markdown
# Schema API
|
|
|
|
Schema helpers let you create and update tables programmatically.
|
|
|
|
## Example: create table
|
|
|
|
```java
|
|
import com.andrewkydev.database.schema.ColumnSpec;
|
|
import com.andrewkydev.database.schema.IndexSpec;
|
|
import com.andrewkydev.database.schema.TableSpec;
|
|
|
|
TableSpec table = TableSpec.builder("players")
|
|
.column(ColumnSpec.builder("id", "BIGINT").primaryKey(true).autoIncrement(true).nullable(false).build())
|
|
.column(ColumnSpec.builder("name", "VARCHAR(32)").nullable(false).build())
|
|
.index(new IndexSpec("players_name_idx", java.util.Arrays.asList("name"), false))
|
|
.build();
|
|
|
|
api.schema().createTable(table);
|
|
```
|
|
|
|
## API Methods
|
|
|
|
```java
|
|
api.schema().createDatabase("primalix");
|
|
api.schema().dropDatabase("primalix");
|
|
api.schema().createTable(spec);
|
|
api.schema().dropTable("players");
|
|
api.schema().addColumn("players", ColumnSpec.builder("level", "INT").build());
|
|
api.schema().updateColumn("players", ColumnSpec.builder("level", "INT").nullable(false).build());
|
|
api.schema().dropColumn("players", "level");
|
|
api.schema().addIndex("players", new IndexSpec("players_name_idx", java.util.Arrays.asList("name"), false));
|
|
api.schema().dropIndex("players", "players_name_idx");
|
|
```
|
|
|
|
All methods also have async variants returning `CompletableFuture`.
|