···104104```
105105106106For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.
107107+108108+## atproto
109109+### Generating Lexicon
110110+Using @atcute/lex-cli for creating Lexicon.
111111+112112+- [Reference](https://raw.githubusercontent.com/mary-ext/atcute/refs/heads/trunk/packages/lexicons/lex-cli/README.md)
113113+114114+```sh
115115+just generate-lexicon
116116+```
···11generate-lexicon:
22 cd ./packages/lexicon/ && bun run lex-cli generate && bun run lex-cli export
3344+spawn-database:
55+ cd ./dev && docker compose up
···11+CREATE TABLE "artists" (
22+ "id" serial PRIMARY KEY NOT NULL,
33+ "did" text,
44+ "name" text,
55+ CONSTRAINT "artists_did_unique" UNIQUE("did"),
66+ CONSTRAINT "did_or_name" CHECK ("artists"."did" IS NOT NULL OR "artists"."name" IS NOT NULL)
77+);
88+--> statement-breakpoint
99+CREATE TABLE "track_artists" (
1010+ "id" serial PRIMARY KEY NOT NULL,
1111+ "track_uri" text NOT NULL,
1212+ "artist_id" integer NOT NULL,
1313+ "position" integer NOT NULL
1414+);
1515+--> statement-breakpoint
1616+CREATE TABLE "tracks" (
1717+ "uri" text PRIMARY KEY NOT NULL,
1818+ "did" text NOT NULL,
1919+ "rkey" text NOT NULL,
2020+ "cid" text NOT NULL,
2121+ "title" text NOT NULL,
2222+ "description" text,
2323+ "created_at" timestamp with time zone NOT NULL,
2424+ "release_date" timestamp with time zone,
2525+ "duration_ms" integer,
2626+ "tags" text[],
2727+ "language" text,
2828+ "license" text,
2929+ "lyrics" text,
3030+ "album_art" jsonb,
3131+ "audio" jsonb,
3232+ "external_url" text,
3333+ "indexed_at" timestamp with time zone DEFAULT now() NOT NULL
3434+);
3535+--> statement-breakpoint
3636+ALTER TABLE "track_artists" ADD CONSTRAINT "track_artists_track_uri_tracks_uri_fk" FOREIGN KEY ("track_uri") REFERENCES "public"."tracks"("uri") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
3737+ALTER TABLE "track_artists" ADD CONSTRAINT "track_artists_artist_id_artists_id_fk" FOREIGN KEY ("artist_id") REFERENCES "public"."artists"("id") ON DELETE cascade ON UPDATE no action;
···11+export * as CaAnsxorCatnipGetTracks from "./types/ca/ansxor/catnip/getTracks.js";
12export * as CaAnsxorCatnipTrack from "./types/ca/ansxor/catnip/track.js";