View Source Changelog for Apwrite v0.1.13
Appwrite
Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API
v0.1.2 — 2024-11-14
Feature(Helper Modules)
Query Module
The Query module is a helper designed to construct query strings for filtering, sorting, and manipulating data when working with an Appwrite database. Here's an explanation of its components and how it works:
[Dynamic_Query_Building] - The module uses a general-purpose new/3 function to construct a query with:
A method: Specifies the type of query (e.g., "equal", "lessThan"). An attribute: The field/attribute in the database being filtered or sorted. A values: The value(s) to compare or filter against. Encapsulation of Query Logic: It provides user-friendly functions like equal/2, greater_than/2, or contains/2 that internally call new/3 and return the appropriate JSON string.
[Support_for_Logical_Operations]:
Combines multiple queries using logical OR (logical_or) and AND (logical_and). These functions decode individual query strings back to maps for nesting. Filtering Capabilities: Offers a range of filtering methods, including:
Equality checks (equal/2, not_equal/2) Range checks (less_than/2, between/3) Null checks (is_null/1, is_not_null/1) String pattern matching (starts_with/2, contains/2) Sorting and Pagination:
[Supports_sorting_by_attributes] (order_asc/1, order_desc/1). Enables pagination with limit/1, offset/1, and cursor-based navigation (cursor_after/1, cursor_before/1). Custom Attributes Selection:
Use select/1 to specify which fields should be returned.
v0.0.2 — 2024-11-14
Feature(Helper Modules)
ID Module
Helper module to generate ID strings for resources. This module provides functions to generate unique ID strings, either based on a timestamp or with custom or Appwrite-like generation methods.
hex_timestamp/0:
Generates a hexadecimal timestamp based on the current time in seconds and milliseconds (equivalent to #hexTimestamp in TypeScript). Uses :os.system_time(:seconds) for the timestamp and :os.system_time(:milli_seconds) for milliseconds. custom/1:
Takes a string and returns it as is (similar to the TypeScript custom method). unique/1:
Generates a unique ID by concatenating the hexadecimal timestamp with random padding (default of 7 digits, configurable). Uses :rand.uniform/1 to generate random digits and append them to the base ID.
Permission Module
Helper module for generating permission strings for resources.
Each function (read, write, create, update, delete) generates a permission string by embedding the given role in a specific permission format. The @doc annotations provide descriptions and usage examples, making the module easy to understand and use. Each function guards with when is_binary(role) to ensure the role is a string.
Role Module
Helper module for generating role strings for Permission
.
The functions any/0, user/2, users/1, guests/0, team/2, member/1, and label/1 provide specific role strings, with optional parameters where needed. Each function is documented with @doc annotations that describe its purpose, parameters, and usage examples.
v0.1.2 — 2024-11-14
Feature(Types Modules)
Algo Types:
[AlgoMd5] - Represents the MD5 hashing algorithm configuration. [AlgoSha] - Represents the SHA hashing algorithm configuration. [AlgoPhpass] - Configuration for the PHPass password hashing algorithm. [AlgoBcrypt] - Configuration for the Bcrypt password hashing algorithm. [AlgoScrypt] - Scrypt hashing algorithm with parameters for CPU, memory, and parallelization costs. [AlgoScryptModified] - Modified Scrypt with additional salt and key-signing configurations. [AlgoArgon2] - Argon2 hashing algorithm with memory, time, and thread cost parameters.
Country and Locale:
[Country] - Represents a country with its name and ISO 3166-1 alpha code. [Continent] - Represents a continent with its name and two-letter code. [Language] - Represents a language with its name, code, and native name. [Currency] - Represents currency details such as name, symbol, and ISO 4217 code. [Phone] - Represents a phone code along with associated country details.
MFA and Authentication:
[MfaChallenge] - Represents an MFA challenge token with expiration details. [MfaRecoveryCodes] - Contains a list of recovery codes for MFA. [MfaType] - Defines the secret token and URI for TOTP MFA setup. [MfaFactors] - Flags indicating supported MFA factors (e.g., TOTP, SMS, email).
Subscribers and Targets:
[Subscriber] - Defines a subscriber to a topic, including user and provider details. [Target] - Represents a target, such as an email or phone, with associated provider details.
Teams and Memberships:
Team<Preferences>: Represents a team with its details and customizable preferences. Membership: Represents a user's membership in a team, including roles and statuses.
Executions and Logs:
[Execution] - Represents a function execution, including logs, errors, and duration. [ExecutionList] - A list of executions with total count and execution details. [LogList] - A list of logs with total count and log details.
User Models:
User<Preferences>: Represents a user, including their preferences, targets, and verification status. Document Collections:
DocumentList<Document>: A collection of documents with total count and individual entries.
Lists:
[SessionList] - A list of sessions, including total count and details. [IdentityList] - A list of user identities with total count and details. [FileList] - A list of files, including total count and metadata. [MembershipList] - A list of memberships, including total count and individual details. [CountryList] - A list of countries, including total count and details. [ContinentList] - A list of continents, including total count and details. [LanguageList] - A list of languages, including total count and details. [CurrencyList] - A list of currencies, including total count and metadata. [PhoneList] - A list of phone codes and associated country details. [LocaleCodeList] - A list of locale codes with their total count and individual entries.
v0.1.1 — 2024-11-13
Feature(Const with validation)
[Consts] modules to for the following resources
[AuthenticationFactor] - Defines supported authentication factors such as email, phone, and TOTP. [AuthenticatorType] Specifies the available authenticator types (currently just TOTP). [Browser] - Lists various browser types with associated shorthand values. [CreditCard] - Covers a wide range of credit card types such as American Express, Visa, MasterCard, etc. [ExecutionMethod] - Includes HTTP methods like GET, POST, PUT, DELETE, etc. [Flag]: Represents various country flags using two-letter country codes. [ImageFormat]: Lists common image formats such as JPG, PNG, and WebP. [ImageGravity]: Defines different image positioning values (e.g., center, top-left, bottom-right). [OAuthProvider]: Covers a wide list of OAuth providers like Google, GitHub, PayPal, and many others.