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 load e save emitem FileError em caso de falha

load preenche 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

erase sempre usa self.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.

Veja também

results matching ""

    No results matching ""