ElevateMinds / astrocms

0 stars 0 forks source link

Database Schema #3

Closed alpeshznakrani closed 2 months ago

alpeshznakrani commented 2 months ago

// Define USERS
const Users = defineTable({
    columns: {
        id: column.number({ primaryKey: true }),
        name: column.text(),
        email: column.text({ unique: true }),
        email_verified_at: column.date({ optional: true }),
        password: column.text(),
        rememberToken: column.text(),
        super: column.boolean({ default: false }),
        avatar: column.text({ optional: true }),
        preferences: column.json({ optional: true }),
        last_login: column.date({ optional: true }),
    },
});

// Define ROLES
const Roles = defineTable({
    columns: {
        id: column.number({ primaryKey: true }),
        handle: column.text({ unique: true }),
        title: column.text(),
        permissions: column.json({ optional: true }),
        preferences: column.json({ optional: true }),
    },
});

// Define GROUPS
const Groups = defineTable({
    columns: {
        id: column.number({ primaryKey: true }),
        handle: column.text({ unique: true }),
        title: column.text(),
        data: column.json({ optional: true }),
        roles: column.json({ optional: true }),
    },
});

// Define ROLE_USER
const RoleUser = defineTable({
    columns: {
        id: column.number({ primaryKey: true }),
        user_id: column.number({ references: 'Users.id' }),
        role_id: column.text(),
    },
});

// Define GROUP_USER
const GroupUser = defineTable({
    columns: {
        id: column.number({ primaryKey: true }),
        user_id: column.number({ references: 'Users.id' }),
        group_id: column.text(),
    },
});

// Define password_activation_tokens
const PasswordActivationTokens = defineTable({
    columns: {
        email: column.text({ index: true }),
        token: column.text(),
        created_at: column.date({ optional: true }),
    },
});

// Export all defined tables
export {
    Users,
    Roles,
    Groups,
    RoleUser,
    GroupUser,
    PasswordActivationTokens,
};