Implementação de User com Roles (funções) com Wallet (carteira) de Bytes para atender a issue #14 e iniciar a atender a issue #13
Foi criada 3 entidades: User, Wallet e TransactionHistory, onde:
User -> contém os campos id_discord, o username, a função (Role) e uma carteira (Wallet)
Wallet -> literalmente uma carteira onde guarda os Bytes e faz um registro de transacoes
TransactionHistory -> o nome já diz.
A cardinalidade seria assim
Um User pode conter apenas 1 Wallet, e 1 Wallet pode conter n Transactions
Roles (ou Funcoes) do User
Atualmente com essa feature, foi pensada em 4 roles Council, Admin, Subscriber e Member.
Member -> Membro comum. O novo User ao ser registrado, é registrado com essa Role
Subscriber -> o nome já diz
Admin -> administradores
Council -> o Dono e quem tem "poder" acima dos adms de decisão dentro do server
A Hierarquia é basicamente, do mais alto ao mais baixo: Council > Admin > Subscriber > Member
Novos comandos
Foi criado 2 novos comandos no momento, o /register e o /alterar_funcao
/register
Serve para registrar a quem interessar ter acesso as funcionalidades do Bot. Com esse comando o novo user será registrado como Member e terá 300.0 bytes na carteira
/alterar_funcao
Foi criando pensando em alterar as roles dos User, porem com a regra de apenas um usuário com uma role superior pode alterar a role de outro usuário.
Council pode alterar as roles de Admin, Subscriber, e Member e pode dar a role de Council a outro user.
Admin pode alterar as roles de Subscriber e Member.
Subscriber pode alterar a role de Member.
Member não pode alterar nada
Exceto o Council que basicamente não existe regra, ele tem poder de alterar totalmente as roles de qualquer User.
Database do Bot
Com essas novas feats, o bot necessitaria de um database, o escolhido foi SQLite3 , junto com o ORM SQLObject para facilitar e agilizar a manipulação de dados junto a esse db.
O database SQLite3 foi escolhido pois é leve e fácil de implementar, e o ORM SQLObject foi selecionado devido a sua facilidade de implementar o CRUD (persistir, alterar, excluir e criar novos models). Ele já atende a grande maioria das funcoes SQL que é necessário como Select, Update e até Joins caso necessite.
Onde fica "instalado" o banco?
Quando o bot inicia pela primeira vez, ele cria um arquivo na raiz do projeto local , o techtiribas_bot.db , ele não é inserido nos commits até então, não há necessidade disso.
Ao iniciar o bot, ele faz a validação se o banco existe e se as tables dentro do banco existem
Se quiser implementar novas tabelas, basta ir no arquivo db/database_config.py e na def create_tables() inserir mais uma linha por exemplo:
Novas entidades
Implementação de User com Roles (funções) com Wallet (carteira) de Bytes para atender a issue #14 e iniciar a atender a issue #13
Foi criada 3 entidades: User, Wallet e TransactionHistory, onde:
User
-> contém os campos id_discord, o username, a função (Role) e uma carteira (Wallet)Wallet
-> literalmente uma carteira onde guarda os Bytes e faz um registro de transacoesTransactionHistory
-> o nome já diz.A cardinalidade seria assim
Um User pode conter apenas 1 Wallet, e 1 Wallet pode conter n Transactions
Roles (ou Funcoes) do User
Atualmente com essa feature, foi pensada em 4 roles
Council
,Admin
,Subscriber
eMember
.Member
-> Membro comum. O novo User ao ser registrado, é registrado com essa RoleSubscriber
-> o nome já dizAdmin
-> administradoresCouncil
-> o Dono e quem tem "poder" acima dos adms de decisão dentro do serverA Hierarquia é basicamente, do mais alto ao mais baixo: Council > Admin > Subscriber > Member
Novos comandos
Foi criado 2 novos comandos no momento, o
/register
e o/alterar_funcao
/register
Serve para registrar a quem interessar ter acesso as funcionalidades do Bot. Com esse comando o novo user será registrado como Member e terá 300.0 bytes na carteira
/alterar_funcao
Foi criando pensando em alterar as roles dos User, porem com a regra de apenas um usuário com uma role superior pode alterar a role de outro usuário.
Council
pode alterar as roles deAdmin
,Subscriber
, eMember
e pode dar a role deCouncil
a outro user.Admin
pode alterar as roles deSubscriber
eMember
.Subscriber
pode alterar a role deMember
.Member
não pode alterar nadaExceto o Council que basicamente não existe regra, ele tem poder de alterar totalmente as roles de qualquer User.
Database do Bot
Com essas novas feats, o bot necessitaria de um database, o escolhido foi SQLite3 , junto com o ORM SQLObject para facilitar e agilizar a manipulação de dados junto a esse db.
O database SQLite3 foi escolhido pois é leve e fácil de implementar, e o ORM SQLObject foi selecionado devido a sua facilidade de implementar o CRUD (persistir, alterar, excluir e criar novos models). Ele já atende a grande maioria das funcoes SQL que é necessário como Select, Update e até Joins caso necessite.
Onde fica "instalado" o banco?
Quando o bot inicia pela primeira vez, ele cria um arquivo na raiz do projeto local , o
techtiribas_bot.db
, ele não é inserido nos commits até então, não há necessidade disso.Ao iniciar o bot, ele faz a validação se o banco existe e se as tables dentro do banco existem
Se quiser implementar novas tabelas, basta ir no arquivo
db/database_config.py
e nadef create_tables()
inserir mais uma linha por exemplo:o formato é basicamente :