Nick
Nick
Explore posts from servers
PPrisma
Created by Nick on 10/10/2024 in #help-and-questions
Prisma Studio not respecting 'not null' fields?
I'm creating a model like this:
model Enquirer {
fName String
sName String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Enquirer {
fName String
sName String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
but prisma studio lets me add records with or without fName, sName and email :/ any thoughts what I might be doing wrong? thanks
3 replies
KPCKevin Powell - Community
Created by Nick on 9/21/2024 in #back-end
Can't connect to my Postgres instance from my app
I've got a Postgres instance set up in a docker container, which allows local connections without a password:
# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
I've set a password for my postgres superuser, but my app refuses to connect (my app is outside the docker container): Connection string: POSTGRES_URI=postgresql://postgres:[email protected]:5432/next-payload-3 I've tried both with and without a password, and these are the errors respectively: With: ERROR: Error: cannot connect to Postgres: password authentication failed for user "postgres" Without: ERROR: Error: cannot connect to Postgres: SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string I output the POSTGRES_URI in my config before the adapter uses it, and it looks fine. The adapter
import { postgresAdapter } from '@payloadcms/db-postgres'

db: postgresAdapter({
pool: {
connectionString: process.env.POSTGRES_URI,
},
}),
import { postgresAdapter } from '@payloadcms/db-postgres'

db: postgresAdapter({
pool: {
connectionString: process.env.POSTGRES_URI,
},
}),
I'm just not really sure if this is a postgres, payload, or drizzle issue (payload uses Drizzle under the hood). I'm betting Drizzle (because it gives me no end of problems), but was hoping someone could tell me if I've made an obvious mistake? Thanks, Nick
4 replies
DTDrizzle Team
Created by Nick on 9/18/2024 in #help
Sharing a database - Keeps trying to drop other tables when pushing tables with the different prefix
So I've got tables with the prefix chris-woodward-gallery and cars-under-20k. I was learning, and still am, so want to make the use of vercel's free db. Problem is I've set up my schema to prefix the tables, and removed any reference to the chris-woodward-gallery variant, but when I push it still say it's trying to drop those tables. As a big-old-noob I'm struggling to debug this tbh:
PostgresError: cannot drop sequence "chris-woodward-gallery_address_id_seq" because other objects depend on it
//snip
severity_local: 'ERROR',
severity: 'ERROR',
code: '2BP01',
detail: 'default value for column id of table "chris-woodward-gallery_address" depends on sequence "chris-woodward-gallery_address_id_seq"',
hint: 'Use DROP ... CASCADE to drop the dependent objects too.',
file: 'dependency.c',
line: '1204',
}
PostgresError: cannot drop sequence "chris-woodward-gallery_address_id_seq" because other objects depend on it
//snip
severity_local: 'ERROR',
severity: 'ERROR',
code: '2BP01',
detail: 'default value for column id of table "chris-woodward-gallery_address" depends on sequence "chris-woodward-gallery_address_id_seq"',
hint: 'Use DROP ... CASCADE to drop the dependent objects too.',
file: 'dependency.c',
line: '1204',
}
2 replies
KPCKevin Powell - Community
Created by Nick on 9/3/2024 in #front-end
CSS View Transitions only working 50% of the time
No description
1 replies
KPCKevin Powell - Community
Created by Nick on 8/15/2024 in #front-end
Not sure how to make this hero text animation responsive
No description
2 replies
KPCKevin Powell - Community
Created by Nick on 7/23/2024 in #back-end
Does anyone use Drizzle here? Many-to-Many relationships and types
Hi, Am a bit confused with Drizzle tbh. I think this is how you set up and query a M:N relationship, but it seems very long-winded, so it kinda feels like a skill issue: Let's say I've got a Users and a Jobs table
// Drizzle relationships:
export const usersRelations = relations(users, ({ many }) => ({
usersToJobs: many(usersToJobs),
}));

export const jobsRelations = relations(jobs, ({ many }) => ({
usersToJobs: many(usersToJobs),
}));

export const usersToJobsRelations = relations(
usersToJobs,
({ one }) => ({
user: one(users, {
fields: [userToJobTable.userId],
references: [userTable.id],
}),
job: one(jobs, {
fields: [usersToJobs.jobId],
references: [jobs.id],
}),
}),
);

// Querying all users and the jobs they've applied for
const users = await db.query.users.findMany({
with: {
usersToJobs: {
with: {
jobs: true,
},
},
},
});
// Drizzle relationships:
export const usersRelations = relations(users, ({ many }) => ({
usersToJobs: many(usersToJobs),
}));

export const jobsRelations = relations(jobs, ({ many }) => ({
usersToJobs: many(usersToJobs),
}));

export const usersToJobsRelations = relations(
usersToJobs,
({ one }) => ({
user: one(users, {
fields: [userToJobTable.userId],
references: [userTable.id],
}),
job: one(jobs, {
fields: [usersToJobs.jobId],
references: [jobs.id],
}),
}),
);

// Querying all users and the jobs they've applied for
const users = await db.query.users.findMany({
with: {
usersToJobs: {
with: {
jobs: true,
},
},
},
});
Is that right? I don't seem to be able to access the other side of the relationship, so it can't be (so like users.jobs or whatever it should be). I feel like I must be missing something. Wouldn't the equivalent in Sequelize just be:
User.belongsToMany(Job, { through: User_Job });
Job.belongsToMany(User, { through: User_Job });

const results = await User.findAll({
include: Job,
});
User.belongsToMany(Job, { through: User_Job });
Job.belongsToMany(User, { through: User_Job });

const results = await User.findAll({
include: Job,
});
Also, if I'm using my schema to create Zod types with drizzle-zod:
import { createInsertSchema } from "drizzle-zod";
export const userSchema = createInsertSchema(users);
import { createInsertSchema } from "drizzle-zod";
export const userSchema = createInsertSchema(users);
I'm a bit stumped as to how to type it now it includes that nested usersToJobs and the jobs? I know I should extend the userSchema, just no idea how to do it correctly! Appreciate any help 🙂 Nick
12 replies
DTDrizzle Team
Created by Nick on 7/23/2024 in #help
Querying and typing a many to many relationship?
So I'm enjoying using drizzle, but querying a many to many relationship seems a bit verbose, which makes me think I'm doing it wrong. It's also making using drizzle-zod a bit confusing: So I've set up my tables, user and profile
// Drizzle relationships:
export const userRelations = relations(users, ({ many }) => ({
usersToProfiles: many(userToProfiles),
}));

export const profileRelations = relations(profiles, ({ many }) => ({
usersToProfiles: many(usersToProfiles),
}));

export const usersToProfilesRelations = relations(
usersToProfiles,
({ one }) => ({
user: one(users, {
fields: [usersToProfiles.userId],
references: [users.id],
}),
profiles: one(profiles, {
fields: [usersToProfiles.profileId],
references: [profiles.id],
}),
}),
);

// Querying all users and their profiles
const listings = await db.query.users.findMany({
with: {
usersToProfiles: {
with: {
profiles: true,
},
},
},
});
// Drizzle relationships:
export const userRelations = relations(users, ({ many }) => ({
usersToProfiles: many(userToProfiles),
}));

export const profileRelations = relations(profiles, ({ many }) => ({
usersToProfiles: many(usersToProfiles),
}));

export const usersToProfilesRelations = relations(
usersToProfiles,
({ one }) => ({
user: one(users, {
fields: [usersToProfiles.userId],
references: [users.id],
}),
profiles: one(profiles, {
fields: [usersToProfiles.profileId],
references: [profiles.id],
}),
}),
);

// Querying all users and their profiles
const listings = await db.query.users.findMany({
with: {
usersToProfiles: {
with: {
profiles: true,
},
},
},
});
I'm then not sure how to extend the User schema with its usersToProfiles and its Profiles:
export const userSchema = createInsertSchema(users);
export const UserWithProfilesSchema = userSchema.extend() // not sure how to extend here
export type UserWithProfileType = z.infer<typeof UserWithProfileSchema>;
export const userSchema = createInsertSchema(users);
export const UserWithProfilesSchema = userSchema.extend() // not sure how to extend here
export type UserWithProfileType = z.infer<typeof UserWithProfileSchema>;
1 replies
KPCKevin Powell - Community
Created by Nick on 6/27/2024 in #front-end
Grid col 1fr behaviour vs percentages?
No description
1 replies
KPCKevin Powell - Community
Created by Nick on 6/26/2024 in #front-end
Positioning within a grid
No description
1 replies
DTDrizzle Team
Created by Nick on 6/18/2024 in #help
Trying to get Drizzle, Lucia and Vercel-postress to work together (no changes to schema detected)
Hi! I'm new to drizzle and lucia and am just having a problem setting up both with vercel-postgres: I'm creating an adapter for Lucia in my schema.ts: export const createAdapter = (db: PgDatabase<any, any, any>) => new DrizzlePostgreSQLAdapter(db, sessionTable, userTable); and using it in db/index.ts. But this doesn't allow drizzle to see the session or user schemas (no changes are detected when I drizzle-kit push )
import { drizzle } from "drizzle-orm/vercel-postgres";
import { sql } from "@vercel/postgres";
import * as schema from "./schema";

export const db = drizzle(sql, { schema });
export const adapter = schema.createAdapter(db);
import { drizzle } from "drizzle-orm/vercel-postgres";
import { sql } from "@vercel/postgres";
import * as schema from "./schema";

export const db = drizzle(sql, { schema });
export const adapter = schema.createAdapter(db);
Any ideas? Sorry if it's obvious! Nick
7 replies
KPCKevin Powell - Community
Created by Nick on 6/1/2024 in #front-end
Intrinsic image sizes
Just looking to optimize my images (actually using Astro, but I'm leaning towards the raw picture tag because it seems like it has more flexibility) The width and height attributes are intrinsic values right? ie not how big I'd like to render the image, but how big the image is on my HDD. I swear I see the former definition used everywhere? I'd then use the sizes attribute (in a picture tag) or css to set the render sizes with relevant breakpoints? Thanks, Nick
118 replies
KPCKevin Powell - Community
Created by Nick on 5/23/2024 in #os-and-tools
Alias'ing an MS exchange email address
Sorry if this is a simple question, but I'm always wary/shit-scared of messing with emails/dns 😄 I'm using a primary domain on O365, exampleA.com, with licenses and users set up, and have another unrelated domain, exampleB.com, with no licenses. I'd like to alias [email protected], with [email protected], so that anyone emailing @exampleB.com will actually mail @exampleA.com. I've found an MS guide here: https://learn.microsoft.com/en-us/microsoft-365/admin/setup/add-domain?view=o365-worldwide but just wanted to ask "is this doing what I think it's doing", and if any replies would appear as being from exampleB.com or if it will default to exampleA.com? Thanks!
3 replies
KPCKevin Powell - Community
Created by Nick on 5/14/2024 in #back-end
DMARC: None vs Quarantine
Anyone mind ELI5 the difference between my DMARC policy of 'none' and more proactive policies? Afaik 'none' should count as having DMARC set up, but doesn't prevent spam? But should I be wary of setting it to 'quarantine'?
1 replies
KPCKevin Powell - Community
Created by Nick on 5/13/2024 in #front-end
Tracking scripts failing on deployment
Hi all, Not really something I've messed about with but I keep trying to add tracking scripts to a site and they keep failing. Running locally gets this error:
Uncaught TypeError: Cannot set properties of undefined (setting 'q')
and uploading to cloudflare gets this, followed by other errors (all pointing to the tracking script):
src/layouts/main-layout.astro:32:917 - error ts(2304): Cannot find name 'd'.
<!-- <script>window.faitracker=window.faitracker||function(){this.q=[];var t=new CustomEvent("FAITRACKER_QUEUED_EVENT");return this.init=function(t,e,a){this.TOKEN=t,this.INIT_PARAMS=e,this.INIT_CALLBACK=a,window.dispatchEvent(new CustomEvent("FAITRACKER_INIT_EVENT"))},this.call=function(){var e={k:"",a:[]};if(arguments&&arguments.length>=1){for(var a=1;a<arguments.length;a++)e.a.push(arguments[a]);e.k=arguments[0]}this.q.push(e),window.dispatchEvent(t)},this.message=function(){window.addEventListener("message",function(t){"faitracker"===t.data.origin&&this.call("message",t.data.type,t.data.message)})},this.message(),this.init("key",{host:"https://api.factors.ai"}),this}(),function(){var t=document.createElement("script");t.type="text/javascript",t.src="https://app.factors.ai/assets/factors.js",t.async=!0,(d=document.getElementsByTagName("script")[0]).parentNode.insertBefore(t,d)}();</script> -->
<!-- <script>window.faitracker=window.faitracker||function(){this.q=[];var t=new CustomEvent("FAITRACKER_QUEUED_EVENT");return this.init=function(t,e,a){this.TOKEN=t,this.INIT_PARAMS=e,this.INIT_CALLBACK=a,window.dispatchEvent(new CustomEvent("FAITRACKER_INIT_EVENT"))},this.call=function(){var e={k:"",a:[]};if(arguments&&arguments.length>=1){for(var a=1;a<arguments.length;a++)e.a.push(arguments[a]);e.k=arguments[0]}this.q.push(e),window.dispatchEvent(t)},this.message=function(){window.addEventListener("message",function(t){"faitracker"===t.data.origin&&this.call("message",t.data.type,t.data.message)})},this.message(),this.init("key",{host:"https://api.factors.ai"}),this}(),function(){var t=document.createElement("script");t.type="text/javascript",t.src="https://app.factors.ai/assets/factors.js",t.async=!0,(d=document.getElementsByTagName("script")[0]).parentNode.insertBefore(t,d)}();</script> -->
Anyone got any ideas? I'm stumped. 🧐
1 replies
CDCloudflare Developers
Created by Nick on 5/13/2024 in #general-help
Tracking script failing on deployment
I'm trying to add this tracking script to my site, but it's failing on deployment with the error (and many others that follow it):
src/layouts/main-layout.astro:32:917 - error ts(2304): Cannot find name 'd'.
they all point to the script. Looks like a typescript error, but I'm not really sure what to do with it?
<!-- <script>window.faitracker=window.faitracker||function(){this.q=[];var t=new CustomEvent("FAITRACKER_QUEUED_EVENT");return this.init=function(t,e,a){this.TOKEN=t,this.INIT_PARAMS=e,this.INIT_CALLBACK=a,window.dispatchEvent(new CustomEvent("FAITRACKER_INIT_EVENT"))},this.call=function(){var e={k:"",a:[]};if(arguments&&arguments.length>=1){for(var a=1;a<arguments.length;a++)e.a.push(arguments[a]);e.k=arguments[0]}this.q.push(e),window.dispatchEvent(t)},this.message=function(){window.addEventListener("message",function(t){"faitracker"===t.data.origin&&this.call("message",t.data.type,t.data.message)})},this.message(),this.init("key",{host:"https://api.factors.ai"}),this}(),function(){var t=document.createElement("script");t.type="text/javascript",t.src="https://app.factors.ai/assets/factors.js",t.async=!0,(d=document.getElementsByTagName("script")[0]).parentNode.insertBefore(t,d)}();</script> -->
<!-- <script>window.faitracker=window.faitracker||function(){this.q=[];var t=new CustomEvent("FAITRACKER_QUEUED_EVENT");return this.init=function(t,e,a){this.TOKEN=t,this.INIT_PARAMS=e,this.INIT_CALLBACK=a,window.dispatchEvent(new CustomEvent("FAITRACKER_INIT_EVENT"))},this.call=function(){var e={k:"",a:[]};if(arguments&&arguments.length>=1){for(var a=1;a<arguments.length;a++)e.a.push(arguments[a]);e.k=arguments[0]}this.q.push(e),window.dispatchEvent(t)},this.message=function(){window.addEventListener("message",function(t){"faitracker"===t.data.origin&&this.call("message",t.data.type,t.data.message)})},this.message(),this.init("key",{host:"https://api.factors.ai"}),this}(),function(){var t=document.createElement("script");t.type="text/javascript",t.src="https://app.factors.ai/assets/factors.js",t.async=!0,(d=document.getElementsByTagName("script")[0]).parentNode.insertBefore(t,d)}();</script> -->
1 replies
KPCKevin Powell - Community
Created by Nick on 5/11/2024 in #os-and-tools
I'm getting an ENOENT error when running create-next-app (or similar)
I've been told it might be because I've a space in my username, which is nuts imo, given it seems overly complicated to change (windows 11). I've been coding for about a month on this laptop with no issues (granted, using Astro and React). But I checked a similar tool - create-react-app - and suffered the same thing. Anyone know what the problem is for sure/any advice?
npm ERR! path C:\Users\Nick Woodward\AppData\Roaming\npm npm ERR! errno -4058 npm ERR! enoent ENOENT: no such file or directory, lstat 'C:\Users\Nick Woodward\AppData\Roaming\npm'
10 replies
KPCKevin Powell - Community
Created by Nick on 4/28/2024 in #os-and-tools
DNS records when moving from Digital Ocean to Cloudflare
Hi all, Was just hoping for some help moving my site and keeping my emails up and running! My registrar is GoDaddy, site on DO, and new site on Cloudflare. I've created a short checklist of records I need, but I've two questions: 1) Have I missed anything obvious? and 2) should the records remain the same despite the move? (yes?). And I guess I might as well ask another: Should I be getting someone else to do this? Feel like it should be easy, but don't want the email to silently fail. Checklist: MX records -> point to x.mail.protection.outlook TXT for dmarc 2 CNAMES for DKIM pointing to MS An external dns for o365 eg: MS=ms93647839 A CNAME for o365 autodiscover An spf txt CNAMES for sendgrid A records and NS Look right? Thanks 🙂
9 replies
CDCloudflare Developers
Created by Nick on 4/28/2024 in #general-help
Moving site + emails to Cloudflare pages (from Digital Ocean)
Hey all, anyone know of any good resources for transferring a site (and more importantly email) from digital ocean to cloudflare? Just looking for a checklist more than a handhold, but it is important that emails are working tomorrow, so I'd take the handhold 😄 I'm thinking: MX records -> point to x.mail.protection.outlook TXT for dmarc 2 CNAMES for DKIM pointing to MS An external dns for o365 eg: MS=ms93647839 A CNAME for o365 autodiscover An spf txt CNAMES for sendgrid A records and NS I've currently got the records in DO afaik, is there anything above I've missed, or anything that might change based on the fact that I'm moving from DO to CF? Email registrar is GoDaddy. Appreciate it **also happy to be told I shouldn't do it
4 replies
KPCKevin Powell - Community
Created by Nick on 4/27/2024 in #os-and-tools
Github blocked push due to secrets
It was right, my rest.http file was misspelt in my gitignore. But now it's correct and git is still blocking me, I'm assuming because the file is in an older commit? Does anyone know how I can solve this please? Thanks
3 replies
CDCloudflare Developers
Created by Nick on 4/26/2024 in #general-help
Pages: Failed to publish your Function.
Hi all, just getting this error when trying to deploy an astro ssr (with the cloudflare integration):
Error: Failed to publish your Function. Got error: Uncaught Error: No such module "chunks/prerender_BU2rOQkH.mjs". imported from "renderers.mjs"
I'm not going to lie, I have very little idea where to start or what it's actually complaining about. Would appreciate some advice! *edit: The log in case it helps:
05:44:36.224 ✨ Compiled Worker successfully 05:44:36.272 Found _routes.json in output directory. Uploading. 05:44:36.291 Validating asset output directory 05:44:37.259 Deploying your site to Cloudflare's global network... 05:44:40.757 Uploading... (44/44) 05:44:40.758 ✨ Success! Uploaded 0 files (44 already uploaded) (0.34 sec) 05:44:40.758
05:44:41.187 ✨ Upload complete! 05:44:44.175 Success: Assets published! 05:44:45.813 Error: Failed to publish your Function. Got error: Uncaught Error: No such module "chunks/prerender_BU2rOQkH.mjs". imported from "renderers.mjs"
11 replies