File: SchemaBuilder.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (37 lines) | stat: -rw-r--r-- 825 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

namespace Wikimedia\Rdbms;

/**
 * Interface SchemaBuilder that gets a definition and produces SQL based on RDBMS
 *
 * @experimental
 * @unstable
 */
interface SchemaBuilder {

	/**
	 * An example of $schema value:
	 * [
	 * 'name' => 'actor',
	 * 'columns' => [
	 * 	[ 'actor_id', 'bigint', [ 'Unsigned' => true, 'Notnull' => true ] ],
	 * 	[ 'actor_user', 'integer', [ 'Unsigned' => true ] ],
	 * 	[ 'actor_name', 'string', [ 'Length' => 255, 'Notnull' => true ] ],
	 * ],
	 * 'indexes' => [
	 * 	[ 'actor_user', [ 'actor_user' ], 'unique' => true ],
	 * 	[ 'actor_name', [ 'actor_name' ], 'unique' => true ]
	 *  ],
	 * 'pk' => [ 'actor_id' ]
	 * ],
	 * @param array $schema
	 * @return void
	 */
	public function addTable( array $schema );

	/**
	 * @return string[] SQLs to run
	 */
	public function getSql();
}