Skip to content

Commit a549041

Browse files
authored
add ash_sqlite section to ash chapter (#6)
1 parent 3042fd3 commit a549041

File tree

5 files changed

+398
-47
lines changed

5 files changed

+398
-47
lines changed

docs/.nojekyll

Whitespace-only changes.

docs/elixir/ash.html

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,199 @@ <h2 id="paso-4-realizar-pruebas"><a class="anchor" href="#paso-4-realizar-prueba
820820
</div>
821821
</div>
822822
<div class="sect1">
823+
<h2 id="cómo-usar-sqlite-en-vez-de-postgres"><a class="anchor" href="#cómo-usar-sqlite-en-vez-de-postgres"></a>Cómo usar SQLite en vez de Postgres</h2>
824+
<div class="sectionbody">
825+
<div class="sect2">
826+
<h3 id="1-cambiar-el-repo"><a class="anchor" href="#1-cambiar-el-repo"></a>1. Cambiar el Repo</h3>
827+
<div class="paragraph">
828+
<p>En <code>.lib/stoic_quotes/repo.ex</code>, reemplazar:</p>
829+
</div>
830+
<div class="listingblock">
831+
<div class="content">
832+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">use AshPostgres.Repo,
833+
otp_app: :stoic_quotes</code></pre>
834+
</div>
835+
</div>
836+
<div class="paragraph">
837+
<p>Por:</p>
838+
</div>
839+
<div class="listingblock">
840+
<div class="content">
841+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">use AshSqlite.Repo,
842+
otp_app: :stoic_quotes</code></pre>
843+
</div>
844+
</div>
845+
<div class="paragraph">
846+
<p>Eliminar las funciones <code>prefer_transaction?</code> y <code>installed_extensions</code> si existen en el módulo.</p>
847+
</div>
848+
</div>
849+
<div class="sect2">
850+
<h3 id="2-instalar-la-extensión-de-sqlite"><a class="anchor" href="#2-instalar-la-extensión-de-sqlite"></a>2. Instalar la extensión de SQLite</h3>
851+
<div class="listingblock">
852+
<div class="content">
853+
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mix igniter.install ash_sqlite</code></pre>
854+
</div>
855+
</div>
856+
</div>
857+
<div class="sect2">
858+
<h3 id="3-actualizar-configuraciones"><a class="anchor" href="#3-actualizar-configuraciones"></a>3. Actualizar configuraciones</h3>
859+
<div class="paragraph">
860+
<p>En <code>config/dev.exs</code>, cambiar:</p>
861+
</div>
862+
<div class="listingblock">
863+
<div class="content">
864+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">config :stoic_quotes, StoicQuotes.Repo,
865+
username: "postgres",
866+
password: "postgres",
867+
hostname: "localhost",
868+
database: "stoic_quotes_dev",
869+
stacktrace: true,
870+
show_sensitive_data_on_connection_error: true,
871+
pool_size: 10</code></pre>
872+
</div>
873+
</div>
874+
<div class="paragraph">
875+
<p>Por:</p>
876+
</div>
877+
<div class="listingblock">
878+
<div class="content">
879+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">config :stoic_quotes, StoicQuotes.Repo,
880+
database: Path.join(__DIR__, "../data.db"),
881+
show_sensitive_data_on_connection_error: true,
882+
pool_size: 10</code></pre>
883+
</div>
884+
</div>
885+
<div class="paragraph">
886+
<p>En <code>config/test.exs</code>, cambiar:</p>
887+
</div>
888+
<div class="listingblock">
889+
<div class="content">
890+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">config :stoic_quotes, StoicQuotes.Repo,
891+
username: "postgres",
892+
password: "postgres",
893+
hostname: "localhost",
894+
database: "stoic_quotes_test#{System.get_env("MIX_TEST_PARTITION")}",
895+
pool: Ecto.Adapters.SQL.Sandbox,
896+
pool_size: System.schedulers_online() * 2</code></pre>
897+
</div>
898+
</div>
899+
<div class="paragraph">
900+
<p>Por:</p>
901+
</div>
902+
<div class="listingblock">
903+
<div class="content">
904+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">config :stoic_quotes, StoicQuotes.Repo,
905+
database: Path.join(__DIR__, "../data_#{System.get_env("MIX_TEST_PARTITION")}.db"),
906+
pool: Ecto.Adapters.SQL.Sandbox,
907+
pool_size: 10</code></pre>
908+
</div>
909+
</div>
910+
</div>
911+
<div class="sect2">
912+
<h3 id="4-actualizar-el-recurso"><a class="anchor" href="#4-actualizar-el-recurso"></a>4. Actualizar el Recurso</h3>
913+
<div class="paragraph">
914+
<p>En el archivo del Recurso (<code>lib/stoic_quotes/resources/quote.ex</code> o similar), hacer dos cambios:</p>
915+
</div>
916+
<div class="olist arabic">
917+
<ol class="arabic">
918+
<li>
919+
<p><strong>Reemplazar el bloque <code>postgres</code> por <code>sqlite</code>:</strong></p>
920+
</li>
921+
</ol>
922+
</div>
923+
<div class="paragraph">
924+
<p>De:</p>
925+
</div>
926+
<div class="listingblock">
927+
<div class="content">
928+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">postgres do
929+
table "quotes"
930+
repo StoicQuotes.Repo
931+
end</code></pre>
932+
</div>
933+
</div>
934+
<div class="paragraph">
935+
<p>A:</p>
936+
</div>
937+
<div class="listingblock">
938+
<div class="content">
939+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">sqlite do
940+
table "quotes"
941+
repo StoicQuotes.Repo
942+
end</code></pre>
943+
</div>
944+
</div>
945+
<div class="olist arabic">
946+
<ol class="arabic">
947+
<li>
948+
<p><strong>Cambiar el <code>data_layer</code> de Postgres a SQLite:</strong></p>
949+
</li>
950+
</ol>
951+
</div>
952+
<div class="paragraph">
953+
<p>De:</p>
954+
</div>
955+
<div class="listingblock">
956+
<div class="content">
957+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">use Ash.Resource,
958+
otp_app: :stoic_quotes,
959+
domain: StoicQuotes.Ash,
960+
extensions: [AshGraphql.Resource],
961+
data_layer: AshPostgres.DataLayer</code></pre>
962+
</div>
963+
</div>
964+
<div class="paragraph">
965+
<p>A:</p>
966+
</div>
967+
<div class="listingblock">
968+
<div class="content">
969+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir">use Ash.Resource,
970+
otp_app: :stoic_quotes,
971+
domain: StoicQuotes.Ash,
972+
extensions: [AshGraphql.Resource],
973+
data_layer: AshSqlite.DataLayer</code></pre>
974+
</div>
975+
</div>
976+
</div>
977+
<div class="sect2">
978+
<h3 id="5-limpiar-migraciones-antiguas-y-generar-nuevas"><a class="anchor" href="#5-limpiar-migraciones-antiguas-y-generar-nuevas"></a>5. Limpiar migraciones antiguas y generar nuevas</h3>
979+
<div class="listingblock">
980+
<div class="content">
981+
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash"># Eliminar directorios de migraciones anteriores
982+
rm -rf priv/resource_snapshots
983+
rm -rf priv/repo/migrations
984+
985+
# Generar nuevas migraciones compatibles con SQLite
986+
mix ash_sqlite.generate_migrations --name migrate_to_sqlite
987+
988+
# Ejecutar las migraciones
989+
mix ecto.migrate</code></pre>
990+
</div>
991+
</div>
992+
</div>
993+
<div class="sect2">
994+
<h3 id="6-remover-dependencia-de-postgres"><a class="anchor" href="#6-remover-dependencia-de-postgres"></a>6. Remover dependencia de Postgres</h3>
995+
<div class="paragraph">
996+
<p>Finalmente, eliminar la dependencia de <code>ash_postgres</code> en el archivo <code>mix.exs</code>:</p>
997+
</div>
998+
<div class="listingblock">
999+
<div class="content">
1000+
<pre class="highlightjs highlight"><code class="language-elixir hljs" data-lang="elixir"># Remover de la lista de dependencias:
1001+
{:ash_postgres, "~&gt; 2.0"},</code></pre>
1002+
</div>
1003+
</div>
1004+
<div class="paragraph">
1005+
<p>Y correr:</p>
1006+
</div>
1007+
<div class="listingblock">
1008+
<div class="content">
1009+
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mix deps.get</code></pre>
1010+
</div>
1011+
</div>
1012+
</div>
1013+
</div>
1014+
</div>
1015+
<div class="sect1">
8231016
<h2 id="referencias"><a class="anchor" href="#referencias"></a>Referencias</h2>
8241017
<div class="sectionbody">
8251018
<div class="ulist">

docs/search-index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)