Storable
Armazenamento de dados
Importação
_ <- fat.extra.Storable
biblioteca file, biblioteca sdk, biblioteca enigma, tipo Error, tipo Text, tipo Void e tipo Method são automaticamente importados com esta importação
Mixins
Esta biblioteca introduz dois tipos de mixin: Storable e EncryptedStorable
Storable
O mixin Storable fornece métodos para armazenar e recuperar objetos no sistema de arquivos usando serialização JSON.
Membros do protótipo
| Nome | Assinatura | Breve descrição |
|---|---|---|
| list | <> Keyset | Obtém lista de ids para instâncias armazenadas |
| load | (id: Text): Any | Carrega um objeto do sistema de arquivos |
| save | <> Void | Salva a instância do objeto atual |
| erase | <> Void | Exclui o arquivo associado ao id |
os métodos
loadesaveemitemFileErrorem caso de falha
loadpreenche os valores padrão declarados no tipo para chaves ausentes no registro armazenado (valores armazenados têm precedência), de modo que os registros sobrevivam à evolução do modelo de dados, por exemplo, campos adicionados após a gravação do registro
erasesempre usaself.id, ignorando quaisquer argumentos
EncryptedStorable
Estende Storable com capacidades de criptografia para um armazenamento de dados mais seguro. Requer uma implementação do método getEncryptionKey.
Exemplo de uso
_ <- fat.extra.Storable
# Defina um tipo que inclua Storable (ou EncryptedStorable)
User = (
Storable # Inclui o mixin Storable
# EncryptedStorable # implementação alternativa
# getEncryptionKey = (): Text -> '3ncryp1ptM3' # poderia obter via KMS ou configuração
## Argumentos
name: Text
email: Text
# Os setters retornam uma nova cópia imutável da instância com o campo atualizado
setName = (name: Text) -> self + User * { name }
setEmail = (email: Text) -> self + User * { email }
)
# Cria uma nova instância de usuário
newUser = User('Jane Doe', 'jane.doe@example.com')
# Salva o novo usuário
newUser.save
# Atualiza as informações do usuário e salva as alterações
updatedUser = newUser
.setName('Jane Smith')
.setEmail('jane.smith@example.com')
updatedUser.save
# Lista todos os usuários salvos
userIds = User.list
# Carrega um usuário do sistema de arquivos
userId = userIds(0) # ...ou newUser.id
loadedUser = User.load(userId)
# Exclui os dados do usuário do sistema de arquivos
loadedUser.erase # sempre usa o id da própria instância
Storable na Web Build
Ao usar fry compilado com Emscripten (por exemplo, ao usar FatScript Playground), este protótipo utiliza comandos embutidos $storableSave, $storableLoad,$storableList e $storableErase , que são definidos apenas na compilação para web. Portanto, em vez de utilizar o sistema de arquivos convencional para o armazenamento, há suporte especial para utilização do objeto localStorage do navegador.