Compare commits

..

No commits in common. "20e7c40ec57bc70f2a5d5cddc4716a4f2dae3693" and "3fbb731865650b59e287229ef4d42819e1e5fc99" have entirely different histories.

2 changed files with 286 additions and 340 deletions

View File

@ -84,7 +84,7 @@ export const artists: Artist[] = [
name: "Angel Andrade", name: "Angel Andrade",
title: "", title: "",
specialty: "Precision in the details", specialty: "Precision in the details",
faceImage: "", faceImage: "/artists/angel-andrade-portrait.jpg",
workImages: [ workImages: [
"/artists/angel-andrade-work-1.jpg", "/artists/angel-andrade-work-1.jpg",
"/artists/angel-andrade-work-2.jpg", "/artists/angel-andrade-work-2.jpg",
@ -110,23 +110,24 @@ export const artists: Artist[] = [
slug: "amari-rodriguez", slug: "amari-rodriguez",
name: "Amari Kyss", name: "Amari Kyss",
title: "", title: "",
specialty: "American & Japanese Traditional", specialty: "Apprentice Artist",
faceImage: "/artists/amari-rodriguez-portrait.jpg", faceImage: "/artists/amari-rodriguez-portrait.jpg",
workImages: [ workImages: [
"/artists/amari-rodriguez-work-1.jpg", "/artists/amari-rodriguez-work-1.jpg",
"/artists/amari-rodriguez-work-2.jpg", "/artists/amari-rodriguez-work-2.jpg",
"/artists/amari-rodriguez-work-3.jpg" "/artists/amari-rodriguez-work-3.jpg"
], ],
bio: "Colorado Springs Tattoo artist focused on creating meaningful, timeless work that blends bold color traditional with black and grey stipple styles.", bio: "Passionate apprentice artist bringing fresh creativity and dedication to every piece.",
experience: "", experience: "Apprentice",
rating: 5.0, rating: 4.5,
reviews: 12, reviews: 12,
availability: "Available", availability: "Available",
styles: ["American/Japanese Traditional", "Neo-Traditional", "Black & Grey", "Fine Line", "Lettering"], styles: ["Traditional", "Color Work", "Black & Grey", "Fine Line"],
description1: { description1: {
text: "Rising Talent", text: "Rising Talent",
details: [ details: [
"Amari Tattoos with love and intention. She puts her heart into every piece she creates." "Amari is our talented apprentice, training under the guidance of Christy Lumberg.",
"Bringing fresh perspectives and passionate dedication to the art of tattooing."
] ]
} }
}, },
@ -189,7 +190,7 @@ export const artists: Artist[] = [
name: "Heather Santistevan", name: "Heather Santistevan",
title: "", title: "",
specialty: "Art in Motion", specialty: "Art in Motion",
faceImage: "", faceImage: "/artists/heather-santistevan-portrait.jpg",
workImages: [ workImages: [
"/artists/heather-santistevan-work-1.jpg", "/artists/heather-santistevan-work-1.jpg",
"/artists/heather-santistevan-work-2.jpg", "/artists/heather-santistevan-work-2.jpg",
@ -242,7 +243,7 @@ export const artists: Artist[] = [
name: "Pako Martinez", name: "Pako Martinez",
title: "", title: "",
specialty: "Traditional Artistry", specialty: "Traditional Artistry",
faceImage: "", faceImage: "/artists/pako-martinez-portrait.jpg",
workImages: [ workImages: [
"/artists/pako-martinez-work-1.jpg", "/artists/pako-martinez-work-1.jpg",
"/artists/pako-martinez-work-2.jpg", "/artists/pako-martinez-work-2.jpg",
@ -288,50 +289,6 @@ export const artists: Artist[] = [
"Fusing gritty realism with bold, comic book-inspired designs, Sole's tattoos are a dynamic celebration of storytelling and imagination." "Fusing gritty realism with bold, comic book-inspired designs, Sole's tattoos are a dynamic celebration of storytelling and imagination."
] ]
} }
},
{
id: 10,
slug: "deziree-stanford",
name: "Deziree Stanford",
title: "",
specialty: "Apprentice Artist",
faceImage: "",
workImages: [],
bio: "Passionate apprentice artist bringing fresh creativity and dedication to every piece.",
experience: "Apprentice",
rating: 4.5,
reviews: 0,
availability: "Available",
styles: ["Traditional", "Black & Grey", "Fine Line"],
description1: {
text: "Emerging Talent",
details: [
"Deziree is our talented apprentice, learning the craft of tattooing under expert guidance.",
"Bringing enthusiasm and artistic passion to United Tattoo."
]
}
},
{
id: 11,
slug: "kaori-cedre",
name: "Kaori Cedre",
title: "",
specialty: "Artistic Expression",
faceImage: "",
workImages: [],
bio: "Skilled tattoo artist bringing creativity and precision to every design.",
experience: "5+ years",
rating: 4.8,
reviews: 0,
availability: "Available",
styles: ["Black & Grey", "Fine Line", "Illustrative", "Color Work"],
description1: {
text: "Creative Vision",
details: [
"Kaori brings artistic vision and technical skill to United Tattoo.",
"Specializing in designs that blend precision with creative expression."
]
}
} }
] ]

View File

@ -260,46 +260,35 @@ United Tattoo Studio Team
### Issue: Duplicate artist profiles created ### Issue: Duplicate artist profiles created
**Possible causes:** **Possible causes:**
- Email mismatch between Nextcloud and database - Email mismatch between Nextcloud and database
- User signed in before email was matched - User signed in before email was matched
**Solution:** **Solution:**
1. Identify duplicate records: 1. Identify duplicate records:
```sql ```sql
SELECT * FROM artists WHERE user_id IN ( SELECT * FROM artists WHERE user_id IN (
SELECT user_id FROM artists GROUP BY user_id HAVING COUNT(*) > 1 SELECT user_id FROM artists GROUP BY user_id HAVING COUNT(*) > 1
); );
``` ```
2. Manually merge duplicates by updating portfolio images to point to the correct artist 2. Manually merge duplicates by updating portfolio images to point to the correct artist
3. Delete the duplicate artist profile 3. Delete the duplicate artist profile
### Issue: Artist can't access dashboard after sign-in ### Issue: Artist can't access dashboard after sign-in
**Possible causes:** **Possible causes:**
- Artist profile not created during auto-provisioning - Artist profile not created during auto-provisioning
- Database transaction failed - Database transaction failed
**Solution:** **Solution:**
1. Check if user exists: 1. Check if user exists:
```sql ```sql
SELECT * FROM users WHERE email = 'artist@example.com'; SELECT * FROM users WHERE email = 'artist@example.com';
``` ```
2. Check if artist profile exists: 2. Check if artist profile exists:
```sql ```sql
SELECT * FROM artists WHERE user_id = 'user-id-from-above'; SELECT * FROM artists WHERE user_id = 'user-id-from-above';
``` ```
3. If user exists but artist doesn't, manually create artist: 3. If user exists but artist doesn't, manually create artist:
```sql ```sql
INSERT INTO artists (id, user_id, name, bio, specialties, is_active, slug) INSERT INTO artists (id, user_id, name, bio, specialties, is_active, slug)
VALUES ('uuid', 'user-id', 'Artist Name', '', '[]', 1, 'artist-name'); VALUES ('uuid', 'user-id', 'Artist Name', '', '[]', 1, 'artist-name');