M migrations/20230419111959_setup_base_db.ts => migrations/20230419111959_setup_base_db.ts +18 -0
@@ 1,4 1,5 @@
import {Knex} from "knex";
+import {neosUserPerms} from "../src/types/dbTypes";
export async function up(knex: Knex): Promise<void> {
await knex.schema.createSchemaIfNotExists('neosmanager');
@@ 45,6 46,23 @@ export async function up(knex: Knex): Promise<void> {
.foreign('image_id').references('images.id').deferrable('deferred')
.notNullable();
});
+
+ await knex.schema.withSchema('neosmanager').createTable('neos_permissions', (table) => {
+ table
+ .uuid('id')
+ .primary()
+ .comment('UUID of the row')
+ .defaultTo(knex.raw('gen_random_uuid()'));
+
+ table
+ .text('username')
+ .comment('username of the user')
+ .notNullable();
+
+ table
+ .enum('permissions', ['Admin', 'Builder', 'Moderator', 'Guest', 'Spectator'])
+ .notNullable();
+ });
}
M src/types/dbTypes.ts => src/types/dbTypes.ts +14 -0
@@ 24,3 24,17 @@ export interface UsersTable {
password: string,
access_level: userLevels
}
+
+export enum neosUserPerms {
+ 'Admin',
+ 'Builder',
+ 'Moderator',
+ 'Guest',
+ 'Spectator',
+}
+
+export interface PermissionsTable {
+ id: string,
+ username: string,
+ permission: neosUserPerms,
+}