Nick
Nick
Explore posts from servers
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
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
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
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
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
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
KPCKevin Powell - Community
Created by Nick on 4/6/2024 in #os-and-tools
How to execute this powershell script? (Defederating GoDaddy o365)
Hey all, trying to get the hell away from GoDaddy and using the defederating guide here: https://tminus365.com/defederating-godaddy-365/ It provides a script here:
Write-Host "Checking for MSGraph module..."

$Module = Get-Module -Name "Microsoft.Graph.Identity.DirectoryManagement" -ListAvailable

if ($Module -eq $null) {

Write-Host "MSGraph module not found, installing MSGraph"
Install-Module -name Microsoft.Graph.Identity.DirectoryManagement

}
Connect-MgGraph -Scopes "Directory.Read.All","Domain.Read.All","Domain.ReadWrite.All","Directory.AccessAsUser.All"
#Enter the Admin credentials from "Become a tenant Admin in GoDaddy"

Get-MgDomain
#See that the domain is β€œfederated”#

Update-MgDomain -DomainId "<InsertFederatedDomain>" -Authentication Managed
Write-Host "Checking for MSGraph module..."

$Module = Get-Module -Name "Microsoft.Graph.Identity.DirectoryManagement" -ListAvailable

if ($Module -eq $null) {

Write-Host "MSGraph module not found, installing MSGraph"
Install-Module -name Microsoft.Graph.Identity.DirectoryManagement

}
Connect-MgGraph -Scopes "Directory.Read.All","Domain.Read.All","Domain.ReadWrite.All","Directory.AccessAsUser.All"
#Enter the Admin credentials from "Become a tenant Admin in GoDaddy"

Get-MgDomain
#See that the domain is β€œfederated”#

Update-MgDomain -DomainId "<InsertFederatedDomain>" -Authentication Managed
But I'm just unsure how to implement this? Like obviously I replace <InsertFederatedDomain> with my domain, but in what format do I enter my credentials above? Is this script supposed to be run at once? Because it looks like it should be run in split into at least 4 stages (Write-Host,Connect-MgGraph,Get-MgDomain and Update-MgDomain) Anyone got any tips? Even if you've just got a slightly better grasp than me it would be appreciated! πŸ™‚ Larse.
1 replies