Deno と Supabase で沼った話
Name | 大杉太郎(たろさん,たろ先生) |
Age | 1987 年生まれ |
Place | 茨城県 -> 北海道 -> 東京都 -> 福岡県 |
Career | 講師,開発(Laravel メイン) |
Like1 | Deno,Rust,📚,✈️ 🚃 🚌,🚮 |
Like2 | 🥃, 🍺, 🍷 |
@taro_osg |
_人人人人人人人人人人人人人人人_
> Deno(Fresh)はいいぞ!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
つくったもの
使った技術
沼
まとめ
ジーズでは課題を提出する必要がある!
提出用のシステムをつくろう!
やりたいこと
ブラウザから提出ができる(受講生)
提出した内容を確認できる(受講生)
提出された内容を評価できる(中の人)
(´・ω・`;)ウーン…??
(*`・ω・´) Deno やな!
(*`・ω・´) 最近出た Fresh を使うぞ!
(´・ω・`;) DB は…
(*`・ω・´) Supabase や!
(*`・ω・´) 中身 Postgres やし余裕やろ(慢心)
実装
ルーティングつくって(つくってない)
ファイルベースでいい感じにやってくれる
.
├── admin
│ ├── [id].tsx
│ ├── _middleware.ts
│ └── index.tsx
├── index.tsx
└── posts
├── [id].tsx
├── _middleware.ts
├── create.tsx
├── fantastic.tsx
└── index.tsx
(ディレクトリごとの middleware 設置良き)
画面作って...
SSR のコンポーネントで作成する
import { PageProps } from "$fresh/server.ts";
export default function Greet(props: PageProps) {
return <div>Hello {props.params.name}</div>;
}
(*`・ω・´) とりあえずデプロイするか
…
(*`・ω・´) う,動かん...
—30 分後—
(´・ω・`) モジュールの URL 指定がおかしかった
データ入れる処理作って...
データ全部もってくる処理つくって...
(*`・ω・´) Supabase の公式ライブラリで余裕や!
テーブル連携!
const { data, error } = await supabase
.from("countries")
.select(`name, cities(name)`);
(カラム名とか文字列なのが若干キモいな..)
(*`・ω・´) さて,データの並び替えが必要やな!
order()を使う
const { data, error } = await supabase
.from("cities")
.select("name", "country_id")
.order("id", { ascending: false });
今回は親テーブルの値を
子テーブルのカラムで並び替えたい
(*`・ω・´) fmfm…
const { data, error } = await supabase
.from("countries")
.select(`name, cities(name)`)
.order("name", { foreignTable: "cities", ascending: false });
…
(´・ω・`;) 順番変わってなくね??
(´・ω・`;) 修正修正...
— 1 時間後 —
(´・ω・`;;) なんでや???
(´・ω・`;;) ん??
Ordering on foreign tables
doesn't affect the ordering of the parent table.
外部テーブルでの順序付けは、
親テーブルの順序付けに影響しない。(DeepLによる翻訳)
(´・ω・`;;) あああああああああああ
並び替わらないのは「仕様」
_人人人人人人人人人人人人人人_
> ドキュメントを読め!!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
(*`・ω・´) クソがあああああああ!!!
力こそパワー
posts.sort((a, b) => {
if (a.class > b.class) return -1;
if (a.class < b.class) return 1;
if (a.work > b.work) return -1;
if (a.work < b.work) return 1;
if (a.student_number > b.student_number) return 1;
if (a.student_number < b.student_number) return -1;
return 0;
});
Deno(Fresh)はいいぞ!
Supabase は
外部テーブルキーだと並び替わらないよ!
JS でなんとかすればなんとかなるよ!
_人人人人人人人人人人人人人人_
> ドキュメントを読め!!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄