github.com/openfga/openfga@v1.5.4-rc1/assets/migrations/postgres/001_initialize_schema.sql (about)

     1  -- +goose Up
     2  CREATE TABLE tuple (
     3  		store TEXT NOT NULL,
     4  		object_type TEXT NOT NULL,
     5  		object_id TEXT NOT NULL,
     6  		relation TEXT NOT NULL,
     7  		_user TEXT NOT NULL,
     8  		user_type TEXT NOT NULL,
     9  		ulid TEXT NOT NULL,
    10  		inserted_at TIMESTAMPTZ NOT NULL,
    11  		PRIMARY KEY (store, object_type, object_id, relation, _user)
    12  );
    13  
    14  CREATE INDEX idx_tuple_partial_user ON tuple (store, object_type, object_id, relation, _user) WHERE user_type = 'user';
    15  CREATE INDEX idx_tuple_partial_userset ON tuple (store, object_type, object_id, relation, _user) WHERE user_type = 'userset';
    16  CREATE UNIQUE INDEX idx_tuple_ulid ON tuple (ulid);
    17  
    18  CREATE TABLE authorization_model (
    19  	store TEXT NOT NULL,
    20  	authorization_model_id TEXT NOT NULL,
    21  	type TEXT NOT NULL,
    22  	type_definition BYTEA,
    23  	PRIMARY KEY (store, authorization_model_id, type)
    24  );
    25  
    26  CREATE TABLE store (
    27  	id TEXT PRIMARY KEY,
    28  	name TEXT NOT NULL,
    29  	created_at TIMESTAMPTZ NOT NULL,
    30  	updated_at TIMESTAMPTZ,
    31  	deleted_at TIMESTAMPTZ
    32  );
    33  
    34  CREATE TABLE assertion (
    35  	store TEXT NOT NULL,
    36  	authorization_model_id TEXT NOT NULL,
    37  	assertions BYTEA,
    38  	PRIMARY KEY (store, authorization_model_id)
    39  );
    40  
    41  CREATE TABLE changelog (
    42  	store TEXT NOT NULL,
    43  	object_type TEXT NOT NULL,
    44  	object_id TEXT NOT NULL,
    45  	relation TEXT NOT NULL,
    46  	_user TEXT NOT NULL,
    47  	operation INTEGER NOT NULL,
    48  	ulid TEXT NOT NULL,
    49  	inserted_at TIMESTAMPTZ NOT NULL,
    50  	PRIMARY KEY (store, ulid, object_type)
    51  );
    52  
    53  -- +goose Down
    54  DROP TABLE tuple;
    55  DROP TABLE authorization_model;
    56  DROP TABLE store;
    57  DROP TABLE assertion;
    58  DROP TABLE changelog;