appwrite-utils-cli 0.9.89 → 0.9.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/appwrite/appwriteConfig.d.ts +3 -0
- package/dist/appwrite/appwriteConfig.js +40 -0
- package/dist/appwrite/collections/Album.d.ts +3 -0
- package/dist/appwrite/collections/Album.js +58 -0
- package/dist/appwrite/collections/Artist.d.ts +3 -0
- package/dist/appwrite/collections/Artist.js +65 -0
- package/dist/appwrite/collections/Genre.d.ts +3 -0
- package/dist/appwrite/collections/Genre.js +33 -0
- package/dist/appwrite/collections/Playlist.d.ts +3 -0
- package/dist/appwrite/collections/Playlist.js +55 -0
- package/dist/appwrite/collections/Song.d.ts +3 -0
- package/dist/appwrite/collections/Song.js +88 -0
- package/dist/appwrite/collections/UserActivity.d.ts +3 -0
- package/dist/appwrite/collections/UserActivity.js +51 -0
- package/dist/appwrite/collections/UserData.d.ts +3 -0
- package/dist/appwrite/collections/UserData.js +33 -0
- package/dist/appwrite/schemas/album.d.ts +32 -0
- package/dist/appwrite/schemas/album.js +12 -0
- package/dist/appwrite/schemas/artist.d.ts +35 -0
- package/dist/appwrite/schemas/artist.js +13 -0
- package/dist/appwrite/schemas/genre.d.ts +23 -0
- package/dist/appwrite/schemas/genre.js +9 -0
- package/dist/appwrite/schemas/playlist.d.ts +32 -0
- package/dist/appwrite/schemas/playlist.js +12 -0
- package/dist/appwrite/schemas/song.d.ts +47 -0
- package/dist/appwrite/schemas/song.js +17 -0
- package/dist/appwrite/schemas/userActivity.d.ts +29 -0
- package/dist/appwrite/schemas/userActivity.js +11 -0
- package/dist/appwrite/schemas/userData.d.ts +23 -0
- package/dist/appwrite/schemas/userData.js +9 -0
- package/dist/utils/loadConfigs.js +13 -3
- package/dist/utils/schemaStrings.js +0 -1
- package/package.json +1 -1
- package/src/utils/loadConfigs.ts +13 -4
- package/src/utils/schemaStrings.ts +0 -1
- package/tsconfig.json +1 -1
package/README.md
CHANGED
@@ -125,6 +125,8 @@ This updated CLI ensures that developers have robust tools at their fingertips t
|
|
125
125
|
|
126
126
|
## Changelog
|
127
127
|
|
128
|
+
- 0.9.91: Fixed another webpack error, screw you react (but you're supported now so I guess not-screw-you)
|
129
|
+
- 0.9.90: Fixed Webpack errors (why tf does webpack add an extra `default`...???)
|
128
130
|
- 0.9.80: Fixed collections not being unique between local and remote
|
129
131
|
- 0.9.79: Fixed local collections not being considered for the synchronization unless all de-selected
|
130
132
|
- 0.9.78: Added colored text! And also added a lot more customization options as to what to wipe, update, etc.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import {} from "appwrite-utils";
|
2
|
+
const appwriteConfig = {
|
3
|
+
appwriteEndpoint: "https://appwrite.blackleafdigital.com/v1",
|
4
|
+
appwriteProject: "6717441100056a90bb20",
|
5
|
+
appwriteKey: "standard_f8664be4666240926caa1a2ed15a87424948036e3fd47b8d99a3de0cad83cdea7309ae30d004a3edd44c45292605f4a6b9c654aa44924a7cc5e3e95a77e0c9513d9c29a9059b7cf4fdafe626b67147d26de78390f946aeca22328f7ebdcdad159a644eb7589cacecdf4e397bd51362230cd319544a804db62d8edb968de1392a",
|
6
|
+
enableBackups: true,
|
7
|
+
backupInterval: 3600,
|
8
|
+
backupRetention: 30,
|
9
|
+
enableBackupCleanup: true,
|
10
|
+
enableMockData: false,
|
11
|
+
documentBucketId: "documents",
|
12
|
+
usersCollectionName: "Members",
|
13
|
+
databases: [
|
14
|
+
{
|
15
|
+
$id: "main",
|
16
|
+
name: "Main",
|
17
|
+
bucket: {
|
18
|
+
$id: "main_bucket",
|
19
|
+
name: "Main Bucket",
|
20
|
+
enabled: true,
|
21
|
+
maximumFileSize: 30000000,
|
22
|
+
allowedFileExtensions: [],
|
23
|
+
encryption: true,
|
24
|
+
antivirus: true
|
25
|
+
}
|
26
|
+
},
|
27
|
+
],
|
28
|
+
buckets: [
|
29
|
+
{
|
30
|
+
$id: "global_bucket",
|
31
|
+
name: "Global Bucket",
|
32
|
+
enabled: true,
|
33
|
+
maximumFileSize: 30000000,
|
34
|
+
allowedFileExtensions: [],
|
35
|
+
encryption: true,
|
36
|
+
antivirus: true
|
37
|
+
}
|
38
|
+
]
|
39
|
+
};
|
40
|
+
export default appwriteConfig;
|
@@ -0,0 +1,58 @@
|
|
1
|
+
const Album = {
|
2
|
+
$id: '01JASDQZ5TXZZ1Z9EVR5PKC10G',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'Album',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'title',
|
15
|
+
type: 'string',
|
16
|
+
size: 256,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'artistId',
|
21
|
+
type: 'string',
|
22
|
+
size: 36,
|
23
|
+
required: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
key: 'releaseDate',
|
27
|
+
type: 'float',
|
28
|
+
min: 0,
|
29
|
+
required: true,
|
30
|
+
},
|
31
|
+
{
|
32
|
+
key: 'coverArtId',
|
33
|
+
type: 'string',
|
34
|
+
size: 36,
|
35
|
+
required: false,
|
36
|
+
},
|
37
|
+
{
|
38
|
+
key: 'genreIds',
|
39
|
+
type: 'string',
|
40
|
+
size: 36,
|
41
|
+
array: true,
|
42
|
+
required: false,
|
43
|
+
},
|
44
|
+
],
|
45
|
+
indexes: [
|
46
|
+
{
|
47
|
+
key: 'title',
|
48
|
+
type: 'fulltext',
|
49
|
+
attributes: ['title'],
|
50
|
+
},
|
51
|
+
{
|
52
|
+
key: 'artistId',
|
53
|
+
type: 'key',
|
54
|
+
attributes: ['artistId'],
|
55
|
+
},
|
56
|
+
],
|
57
|
+
};
|
58
|
+
export default Album;
|
@@ -0,0 +1,65 @@
|
|
1
|
+
const Artist = {
|
2
|
+
$id: '01JASCJ8AZ9V1Y5758ZXCWEA8Q',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'Artist',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'name',
|
15
|
+
type: 'string',
|
16
|
+
size: 256,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'bio',
|
21
|
+
type: 'string',
|
22
|
+
size: 1024,
|
23
|
+
required: false,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
key: 'genreIds',
|
27
|
+
type: 'string',
|
28
|
+
size: 36,
|
29
|
+
array: true,
|
30
|
+
required: false,
|
31
|
+
},
|
32
|
+
{
|
33
|
+
key: 'profileImageId',
|
34
|
+
type: 'string',
|
35
|
+
size: 36,
|
36
|
+
required: false,
|
37
|
+
},
|
38
|
+
{
|
39
|
+
key: 'socialLinks',
|
40
|
+
type: 'string',
|
41
|
+
size: 256,
|
42
|
+
array: true,
|
43
|
+
required: false,
|
44
|
+
},
|
45
|
+
{
|
46
|
+
key: 'userId',
|
47
|
+
type: 'string',
|
48
|
+
size: 36,
|
49
|
+
required: true,
|
50
|
+
},
|
51
|
+
],
|
52
|
+
indexes: [
|
53
|
+
{
|
54
|
+
key: 'name',
|
55
|
+
type: 'fulltext',
|
56
|
+
attributes: ['name'],
|
57
|
+
},
|
58
|
+
{
|
59
|
+
key: 'userId',
|
60
|
+
type: 'key',
|
61
|
+
attributes: ['userId'],
|
62
|
+
},
|
63
|
+
],
|
64
|
+
};
|
65
|
+
export default Artist;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
const Genre = {
|
2
|
+
$id: '01JASDXQDKAPCQBDW3NR5D9SBX',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'Genre',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'name',
|
15
|
+
type: 'string',
|
16
|
+
size: 64,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'description',
|
21
|
+
type: 'string',
|
22
|
+
size: 256,
|
23
|
+
},
|
24
|
+
],
|
25
|
+
indexes: [
|
26
|
+
{
|
27
|
+
key: 'name',
|
28
|
+
type: 'fulltext',
|
29
|
+
attributes: ['name'],
|
30
|
+
},
|
31
|
+
],
|
32
|
+
};
|
33
|
+
export default Genre;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
const Playlist = {
|
2
|
+
$id: '01JASDR2H46MJQJZNS65T9B138',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'Playlist',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'name',
|
15
|
+
type: 'string',
|
16
|
+
size: 256,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'userId',
|
21
|
+
type: 'string',
|
22
|
+
size: 36,
|
23
|
+
required: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
key: 'description',
|
27
|
+
type: 'string',
|
28
|
+
size: 1024,
|
29
|
+
},
|
30
|
+
{
|
31
|
+
key: 'isPublic',
|
32
|
+
type: 'boolean',
|
33
|
+
required: true,
|
34
|
+
},
|
35
|
+
{
|
36
|
+
key: 'songIds',
|
37
|
+
type: 'string',
|
38
|
+
size: 36,
|
39
|
+
array: true,
|
40
|
+
},
|
41
|
+
],
|
42
|
+
indexes: [
|
43
|
+
{
|
44
|
+
key: 'name',
|
45
|
+
type: 'fulltext',
|
46
|
+
attributes: ['name'],
|
47
|
+
},
|
48
|
+
{
|
49
|
+
key: 'userId',
|
50
|
+
type: 'key',
|
51
|
+
attributes: ['userId'],
|
52
|
+
},
|
53
|
+
],
|
54
|
+
};
|
55
|
+
export default Playlist;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
const Song = {
|
2
|
+
$id: '01JASCJBWTMDS9K742CKDYD7S3',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'Song',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'title',
|
15
|
+
type: 'string',
|
16
|
+
size: 256,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'artistId',
|
21
|
+
type: 'string',
|
22
|
+
size: 36,
|
23
|
+
required: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
key: 'featuredArtistIds',
|
27
|
+
type: 'string',
|
28
|
+
size: 36,
|
29
|
+
array: true,
|
30
|
+
},
|
31
|
+
{
|
32
|
+
key: 'albumId',
|
33
|
+
type: 'string',
|
34
|
+
size: 36,
|
35
|
+
},
|
36
|
+
{
|
37
|
+
key: 'duration',
|
38
|
+
type: 'float',
|
39
|
+
min: 0,
|
40
|
+
required: true,
|
41
|
+
},
|
42
|
+
{
|
43
|
+
key: 'genre',
|
44
|
+
type: 'string',
|
45
|
+
size: 64,
|
46
|
+
},
|
47
|
+
{
|
48
|
+
key: 'releaseDate',
|
49
|
+
type: 'float',
|
50
|
+
min: 0,
|
51
|
+
required: true,
|
52
|
+
},
|
53
|
+
{
|
54
|
+
key: 'audioFileId',
|
55
|
+
type: 'string',
|
56
|
+
size: 36,
|
57
|
+
required: true,
|
58
|
+
},
|
59
|
+
{
|
60
|
+
key: 'coverArtId',
|
61
|
+
type: 'string',
|
62
|
+
size: 36,
|
63
|
+
},
|
64
|
+
{
|
65
|
+
key: 'lyrics',
|
66
|
+
type: 'string',
|
67
|
+
size: 100000,
|
68
|
+
},
|
69
|
+
],
|
70
|
+
indexes: [
|
71
|
+
{
|
72
|
+
key: 'title',
|
73
|
+
type: 'fulltext',
|
74
|
+
attributes: ['title'],
|
75
|
+
},
|
76
|
+
{
|
77
|
+
key: 'artistId',
|
78
|
+
type: 'key',
|
79
|
+
attributes: ['artistId'],
|
80
|
+
},
|
81
|
+
{
|
82
|
+
key: 'albumId',
|
83
|
+
type: 'key',
|
84
|
+
attributes: ['albumId'],
|
85
|
+
},
|
86
|
+
],
|
87
|
+
};
|
88
|
+
export default Song;
|
@@ -0,0 +1,51 @@
|
|
1
|
+
const UserActivity = {
|
2
|
+
$id: '01JASDSEY956GTW8K4JWRV10G8',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'UserActivity',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'users' },
|
8
|
+
{ permission: 'create', target: 'users' },
|
9
|
+
{ permission: 'update', target: 'users' },
|
10
|
+
{ permission: 'delete', target: 'users' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'userId',
|
15
|
+
type: 'string',
|
16
|
+
size: 36,
|
17
|
+
required: true,
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'activityType',
|
21
|
+
type: 'string',
|
22
|
+
size: 64,
|
23
|
+
required: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
key: 'targetId',
|
27
|
+
type: 'string',
|
28
|
+
size: 36,
|
29
|
+
required: true,
|
30
|
+
},
|
31
|
+
{
|
32
|
+
key: 'timestamp',
|
33
|
+
type: 'float',
|
34
|
+
min: 0,
|
35
|
+
required: true,
|
36
|
+
},
|
37
|
+
],
|
38
|
+
indexes: [
|
39
|
+
{
|
40
|
+
key: 'userId',
|
41
|
+
type: 'key',
|
42
|
+
attributes: ['userId'],
|
43
|
+
},
|
44
|
+
{
|
45
|
+
key: 'activityType',
|
46
|
+
type: 'key',
|
47
|
+
attributes: ['activityType'],
|
48
|
+
},
|
49
|
+
],
|
50
|
+
};
|
51
|
+
export default UserActivity;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
const UserData = {
|
2
|
+
$id: '01JASCH88CF1CVXBXY488WFF2Z',
|
3
|
+
documentSecurity: false,
|
4
|
+
enabled: true,
|
5
|
+
name: 'UserData',
|
6
|
+
$permissions: [
|
7
|
+
{ permission: 'read', target: 'any' },
|
8
|
+
{ permission: 'create', target: 'any' },
|
9
|
+
{ permission: 'update', target: 'label:admin' },
|
10
|
+
{ permission: 'delete', target: 'label:admin' }
|
11
|
+
],
|
12
|
+
attributes: [
|
13
|
+
{
|
14
|
+
key: 'address',
|
15
|
+
type: 'string',
|
16
|
+
size: 256,
|
17
|
+
required: true
|
18
|
+
},
|
19
|
+
{
|
20
|
+
key: 'bio',
|
21
|
+
type: 'string',
|
22
|
+
size: 1024,
|
23
|
+
}
|
24
|
+
],
|
25
|
+
indexes: [
|
26
|
+
{
|
27
|
+
key: 'UniqueAddress',
|
28
|
+
type: 'unique',
|
29
|
+
attributes: ['address']
|
30
|
+
}
|
31
|
+
],
|
32
|
+
};
|
33
|
+
export default UserData;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const AlbumSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
title: z.ZodString;
|
7
|
+
artistId: z.ZodString;
|
8
|
+
releaseDate: z.ZodNumber;
|
9
|
+
coverArtId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
10
|
+
genreIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
12
|
+
title: string;
|
13
|
+
artistId: string;
|
14
|
+
releaseDate: number;
|
15
|
+
$id?: string | undefined;
|
16
|
+
$createdAt?: string | undefined;
|
17
|
+
$updatedAt?: string | undefined;
|
18
|
+
coverArtId?: string | null | undefined;
|
19
|
+
genreIds?: string[] | null | undefined;
|
20
|
+
}, {
|
21
|
+
title: string;
|
22
|
+
artistId: string;
|
23
|
+
releaseDate: number;
|
24
|
+
$id?: string | undefined;
|
25
|
+
$createdAt?: string | undefined;
|
26
|
+
$updatedAt?: string | undefined;
|
27
|
+
coverArtId?: string | null | undefined;
|
28
|
+
genreIds?: string[] | null | undefined;
|
29
|
+
}>;
|
30
|
+
export type AlbumBase = z.infer<typeof AlbumSchemaBase>;
|
31
|
+
export declare const AlbumSchema: z.ZodType<AlbumBase>;
|
32
|
+
export type Album = z.infer<typeof AlbumSchema>;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const AlbumSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
title: z.string().max(256, "Maximum length of 256 characters exceeded"),
|
7
|
+
artistId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
8
|
+
releaseDate: z.number().min(0, "Minimum value of 0 not met"),
|
9
|
+
coverArtId: z.string().max(36, "Maximum length of 36 characters exceeded").nullish(),
|
10
|
+
genreIds: z.array(z.string().max(36, "Maximum length of 36 characters exceeded")).nullish(),
|
11
|
+
});
|
12
|
+
export const AlbumSchema = AlbumSchemaBase;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const ArtistSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
name: z.ZodString;
|
7
|
+
bio: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
8
|
+
genreIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
9
|
+
profileImageId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
10
|
+
socialLinks: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
11
|
+
userId: z.ZodString;
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
13
|
+
name: string;
|
14
|
+
userId: string;
|
15
|
+
$id?: string | undefined;
|
16
|
+
$createdAt?: string | undefined;
|
17
|
+
$updatedAt?: string | undefined;
|
18
|
+
genreIds?: string[] | null | undefined;
|
19
|
+
bio?: string | null | undefined;
|
20
|
+
profileImageId?: string | null | undefined;
|
21
|
+
socialLinks?: string[] | null | undefined;
|
22
|
+
}, {
|
23
|
+
name: string;
|
24
|
+
userId: string;
|
25
|
+
$id?: string | undefined;
|
26
|
+
$createdAt?: string | undefined;
|
27
|
+
$updatedAt?: string | undefined;
|
28
|
+
genreIds?: string[] | null | undefined;
|
29
|
+
bio?: string | null | undefined;
|
30
|
+
profileImageId?: string | null | undefined;
|
31
|
+
socialLinks?: string[] | null | undefined;
|
32
|
+
}>;
|
33
|
+
export type ArtistBase = z.infer<typeof ArtistSchemaBase>;
|
34
|
+
export declare const ArtistSchema: z.ZodType<ArtistBase>;
|
35
|
+
export type Artist = z.infer<typeof ArtistSchema>;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const ArtistSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
name: z.string().max(256, "Maximum length of 256 characters exceeded"),
|
7
|
+
bio: z.string().max(1024, "Maximum length of 1024 characters exceeded").nullish(),
|
8
|
+
genreIds: z.array(z.string().max(36, "Maximum length of 36 characters exceeded")).nullish(),
|
9
|
+
profileImageId: z.string().max(36, "Maximum length of 36 characters exceeded").nullish(),
|
10
|
+
socialLinks: z.array(z.string().max(256, "Maximum length of 256 characters exceeded")).nullish(),
|
11
|
+
userId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
12
|
+
});
|
13
|
+
export const ArtistSchema = ArtistSchemaBase;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const GenreSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
name: z.ZodString;
|
7
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
9
|
+
name: string;
|
10
|
+
$id?: string | undefined;
|
11
|
+
$createdAt?: string | undefined;
|
12
|
+
$updatedAt?: string | undefined;
|
13
|
+
description?: string | null | undefined;
|
14
|
+
}, {
|
15
|
+
name: string;
|
16
|
+
$id?: string | undefined;
|
17
|
+
$createdAt?: string | undefined;
|
18
|
+
$updatedAt?: string | undefined;
|
19
|
+
description?: string | null | undefined;
|
20
|
+
}>;
|
21
|
+
export type GenreBase = z.infer<typeof GenreSchemaBase>;
|
22
|
+
export declare const GenreSchema: z.ZodType<GenreBase>;
|
23
|
+
export type Genre = z.infer<typeof GenreSchema>;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const GenreSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
name: z.string().max(64, "Maximum length of 64 characters exceeded"),
|
7
|
+
description: z.string().max(256, "Maximum length of 256 characters exceeded").nullish(),
|
8
|
+
});
|
9
|
+
export const GenreSchema = GenreSchemaBase;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const PlaylistSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
name: z.ZodString;
|
7
|
+
userId: z.ZodString;
|
8
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
9
|
+
isPublic: z.ZodBoolean;
|
10
|
+
songIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
12
|
+
name: string;
|
13
|
+
userId: string;
|
14
|
+
isPublic: boolean;
|
15
|
+
$id?: string | undefined;
|
16
|
+
$createdAt?: string | undefined;
|
17
|
+
$updatedAt?: string | undefined;
|
18
|
+
description?: string | null | undefined;
|
19
|
+
songIds?: string[] | null | undefined;
|
20
|
+
}, {
|
21
|
+
name: string;
|
22
|
+
userId: string;
|
23
|
+
isPublic: boolean;
|
24
|
+
$id?: string | undefined;
|
25
|
+
$createdAt?: string | undefined;
|
26
|
+
$updatedAt?: string | undefined;
|
27
|
+
description?: string | null | undefined;
|
28
|
+
songIds?: string[] | null | undefined;
|
29
|
+
}>;
|
30
|
+
export type PlaylistBase = z.infer<typeof PlaylistSchemaBase>;
|
31
|
+
export declare const PlaylistSchema: z.ZodType<PlaylistBase>;
|
32
|
+
export type Playlist = z.infer<typeof PlaylistSchema>;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const PlaylistSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
name: z.string().max(256, "Maximum length of 256 characters exceeded"),
|
7
|
+
userId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
8
|
+
description: z.string().max(1024, "Maximum length of 1024 characters exceeded").nullish(),
|
9
|
+
isPublic: z.boolean(),
|
10
|
+
songIds: z.array(z.string().max(36, "Maximum length of 36 characters exceeded")).nullish(),
|
11
|
+
});
|
12
|
+
export const PlaylistSchema = PlaylistSchemaBase;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const SongSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
title: z.ZodString;
|
7
|
+
artistId: z.ZodString;
|
8
|
+
featuredArtistIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
9
|
+
albumId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
10
|
+
duration: z.ZodNumber;
|
11
|
+
genre: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
12
|
+
releaseDate: z.ZodNumber;
|
13
|
+
audioFileId: z.ZodString;
|
14
|
+
coverArtId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
15
|
+
lyrics: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
17
|
+
title: string;
|
18
|
+
artistId: string;
|
19
|
+
releaseDate: number;
|
20
|
+
duration: number;
|
21
|
+
audioFileId: string;
|
22
|
+
$id?: string | undefined;
|
23
|
+
$createdAt?: string | undefined;
|
24
|
+
$updatedAt?: string | undefined;
|
25
|
+
coverArtId?: string | null | undefined;
|
26
|
+
featuredArtistIds?: string[] | null | undefined;
|
27
|
+
albumId?: string | null | undefined;
|
28
|
+
genre?: string | null | undefined;
|
29
|
+
lyrics?: string | null | undefined;
|
30
|
+
}, {
|
31
|
+
title: string;
|
32
|
+
artistId: string;
|
33
|
+
releaseDate: number;
|
34
|
+
duration: number;
|
35
|
+
audioFileId: string;
|
36
|
+
$id?: string | undefined;
|
37
|
+
$createdAt?: string | undefined;
|
38
|
+
$updatedAt?: string | undefined;
|
39
|
+
coverArtId?: string | null | undefined;
|
40
|
+
featuredArtistIds?: string[] | null | undefined;
|
41
|
+
albumId?: string | null | undefined;
|
42
|
+
genre?: string | null | undefined;
|
43
|
+
lyrics?: string | null | undefined;
|
44
|
+
}>;
|
45
|
+
export type SongBase = z.infer<typeof SongSchemaBase>;
|
46
|
+
export declare const SongSchema: z.ZodType<SongBase>;
|
47
|
+
export type Song = z.infer<typeof SongSchema>;
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const SongSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
title: z.string().max(256, "Maximum length of 256 characters exceeded"),
|
7
|
+
artistId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
8
|
+
featuredArtistIds: z.array(z.string().max(36, "Maximum length of 36 characters exceeded")).nullish(),
|
9
|
+
albumId: z.string().max(36, "Maximum length of 36 characters exceeded").nullish(),
|
10
|
+
duration: z.number().min(0, "Minimum value of 0 not met"),
|
11
|
+
genre: z.string().max(64, "Maximum length of 64 characters exceeded").nullish(),
|
12
|
+
releaseDate: z.number().min(0, "Minimum value of 0 not met"),
|
13
|
+
audioFileId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
14
|
+
coverArtId: z.string().max(36, "Maximum length of 36 characters exceeded").nullish(),
|
15
|
+
lyrics: z.string().max(100000, "Maximum length of 100000 characters exceeded").nullish(),
|
16
|
+
});
|
17
|
+
export const SongSchema = SongSchemaBase;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const UserActivitySchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
userId: z.ZodString;
|
7
|
+
activityType: z.ZodString;
|
8
|
+
targetId: z.ZodString;
|
9
|
+
timestamp: z.ZodNumber;
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
11
|
+
userId: string;
|
12
|
+
activityType: string;
|
13
|
+
targetId: string;
|
14
|
+
timestamp: number;
|
15
|
+
$id?: string | undefined;
|
16
|
+
$createdAt?: string | undefined;
|
17
|
+
$updatedAt?: string | undefined;
|
18
|
+
}, {
|
19
|
+
userId: string;
|
20
|
+
activityType: string;
|
21
|
+
targetId: string;
|
22
|
+
timestamp: number;
|
23
|
+
$id?: string | undefined;
|
24
|
+
$createdAt?: string | undefined;
|
25
|
+
$updatedAt?: string | undefined;
|
26
|
+
}>;
|
27
|
+
export type UserActivityBase = z.infer<typeof UserActivitySchemaBase>;
|
28
|
+
export declare const UserActivitySchema: z.ZodType<UserActivityBase>;
|
29
|
+
export type UserActivity = z.infer<typeof UserActivitySchema>;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const UserActivitySchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
userId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
7
|
+
activityType: z.string().max(64, "Maximum length of 64 characters exceeded"),
|
8
|
+
targetId: z.string().max(36, "Maximum length of 36 characters exceeded"),
|
9
|
+
timestamp: z.number().min(0, "Minimum value of 0 not met"),
|
10
|
+
});
|
11
|
+
export const UserActivitySchema = UserActivitySchemaBase;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export declare const UserDataSchemaBase: z.ZodObject<{
|
3
|
+
$id: z.ZodOptional<z.ZodString>;
|
4
|
+
$createdAt: z.ZodOptional<z.ZodString>;
|
5
|
+
$updatedAt: z.ZodOptional<z.ZodString>;
|
6
|
+
address: z.ZodString;
|
7
|
+
bio: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
9
|
+
address: string;
|
10
|
+
$id?: string | undefined;
|
11
|
+
$createdAt?: string | undefined;
|
12
|
+
$updatedAt?: string | undefined;
|
13
|
+
bio?: string | null | undefined;
|
14
|
+
}, {
|
15
|
+
address: string;
|
16
|
+
$id?: string | undefined;
|
17
|
+
$createdAt?: string | undefined;
|
18
|
+
$updatedAt?: string | undefined;
|
19
|
+
bio?: string | null | undefined;
|
20
|
+
}>;
|
21
|
+
export type UserDataBase = z.infer<typeof UserDataSchemaBase>;
|
22
|
+
export declare const UserDataSchema: z.ZodType<UserDataBase>;
|
23
|
+
export type UserData = z.infer<typeof UserDataSchema>;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { z } from "zod";
|
2
|
+
export const UserDataSchemaBase = z.object({
|
3
|
+
$id: z.string().optional(),
|
4
|
+
$createdAt: z.string().optional(),
|
5
|
+
$updatedAt: z.string().optional(),
|
6
|
+
address: z.string().max(256, "Maximum length of 256 characters exceeded"),
|
7
|
+
bio: z.string().max(1024, "Maximum length of 1024 characters exceeded").nullish(),
|
8
|
+
});
|
9
|
+
export const UserDataSchema = UserDataSchemaBase;
|
@@ -36,15 +36,25 @@ export const loadConfig = async (configDir) => {
|
|
36
36
|
const configPath = path.join(configDir, "appwriteConfig.ts");
|
37
37
|
console.log(`Loading config from: ${configPath}`);
|
38
38
|
const configUrl = pathToFileURL(configPath).href;
|
39
|
-
const
|
39
|
+
const configModule = (await import(configUrl));
|
40
|
+
const config = configModule.default?.default || configModule.default || configModule;
|
41
|
+
if (!config) {
|
42
|
+
throw new Error("Failed to load config");
|
43
|
+
}
|
40
44
|
const collectionsDir = path.join(configDir, "collections");
|
41
45
|
const collectionFiles = fs.readdirSync(collectionsDir);
|
42
46
|
config.collections = [];
|
43
47
|
for (const file of collectionFiles) {
|
48
|
+
if (file === "index.ts") {
|
49
|
+
continue;
|
50
|
+
}
|
44
51
|
const filePath = path.join(collectionsDir, file);
|
45
52
|
const fileUrl = pathToFileURL(filePath).href;
|
46
|
-
const collectionModule = (await import(fileUrl))
|
47
|
-
|
53
|
+
const collectionModule = (await import(fileUrl));
|
54
|
+
const collection = collectionModule.default?.default || collectionModule.default || collectionModule;
|
55
|
+
if (collection) {
|
56
|
+
config.collections.push(collection);
|
57
|
+
}
|
48
58
|
}
|
49
59
|
return config;
|
50
60
|
}
|
@@ -172,7 +172,6 @@ export class SchemaGenerator {
|
|
172
172
|
return;
|
173
173
|
}
|
174
174
|
this.config.collections.forEach((collection) => {
|
175
|
-
console.log(`Generating schema for ${JSON.stringify(collection, null, 4)}`);
|
176
175
|
const schemaString = this.createSchemaString(collection.name, collection.attributes);
|
177
176
|
const camelCaseName = toCamelCase(collection.name);
|
178
177
|
const schemaPath = path.join(this.appwriteFolderPath, "schemas", `${camelCaseName}.ts`);
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "appwrite-utils-cli",
|
3
3
|
"description": "Appwrite Utility Functions to help with database management, data conversion, data import, migrations, and much more. Meant to be used as a CLI tool, I do not recommend installing this in frontend environments.",
|
4
|
-
"version": "0.9.
|
4
|
+
"version": "0.9.91",
|
5
5
|
"main": "src/main.ts",
|
6
6
|
"type": "module",
|
7
7
|
"repository": {
|
package/src/utils/loadConfigs.ts
CHANGED
@@ -41,18 +41,27 @@ export const loadConfig = async (
|
|
41
41
|
const configPath = path.join(configDir, "appwriteConfig.ts");
|
42
42
|
console.log(`Loading config from: ${configPath}`);
|
43
43
|
const configUrl = pathToFileURL(configPath).href;
|
44
|
-
const
|
45
|
-
|
44
|
+
const configModule = (await import(configUrl));
|
45
|
+
const config: AppwriteConfig | undefined = configModule.default?.default || configModule.default || configModule;
|
46
|
+
if (!config) {
|
47
|
+
throw new Error("Failed to load config");
|
48
|
+
}
|
46
49
|
const collectionsDir = path.join(configDir, "collections");
|
47
50
|
const collectionFiles = fs.readdirSync(collectionsDir);
|
48
51
|
|
49
52
|
config.collections = [];
|
50
53
|
|
51
54
|
for (const file of collectionFiles) {
|
55
|
+
if (file === "index.ts") {
|
56
|
+
continue;
|
57
|
+
}
|
52
58
|
const filePath = path.join(collectionsDir, file);
|
53
59
|
const fileUrl = pathToFileURL(filePath).href;
|
54
|
-
const collectionModule = (await import(fileUrl))
|
55
|
-
|
60
|
+
const collectionModule = (await import(fileUrl));
|
61
|
+
const collection: Collection | undefined = collectionModule.default?.default || collectionModule.default || collectionModule;
|
62
|
+
if (collection) {
|
63
|
+
config.collections.push(collection);
|
64
|
+
}
|
56
65
|
}
|
57
66
|
|
58
67
|
return config;
|
@@ -226,7 +226,6 @@ export class SchemaGenerator {
|
|
226
226
|
return;
|
227
227
|
}
|
228
228
|
this.config.collections.forEach((collection) => {
|
229
|
-
console.log(`Generating schema for ${JSON.stringify(collection, null, 4)}`);
|
230
229
|
const schemaString = this.createSchemaString(
|
231
230
|
collection.name,
|
232
231
|
collection.attributes
|
package/tsconfig.json
CHANGED