#astro:db and defineTable
7 messages · Page 1 of 1 (latest)
Hi @cunning harbor. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
In Astro, you can specify a table name when defining a table using the defineTable() function. The name of the table is determined by the constant you assign the defineTable() function to. For example, if you want to create a table named Comment, you would do it like this:
import { defineDb, defineTable, column } from 'astro:db';
const Comment = defineTable({ columns: { author: column.text(), body: column.text(), }})
export default defineDb({ tables: { Comment },})
In this example, Comment is the name of the table. The table is then registered in the database configuration by including it in the tables object of the defineDb() function.
For more details, you can refer to the Astro DB documentation (https://docs.astro.build/en/guides/astro-db#define-your-database).
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
@cunning harbor kapa.ai is still learning and improving, please let us know how it did by reacting below
@clever grotto and if it is a non-standard name? for instance, what if the name of the users table is auth_users?
Let me check the knowledge base for you. One moment! :books:
If you want to use a non-standard name for a table, such as auth_users, you can still do so by defining the table with a constant and then mapping it to the desired name in the defineDb() function. Here's how you can do it:
import { defineDb, defineTable, column } from 'astro:db';
const Users = defineTable({ columns: { username: column.text(), password: column.text(), }});
export default defineDb({ tables: { auth_users: Users },})
In this example, Users is the constant representing the table, but the actual table name in the database will be auth_users.