# Generated by Django 4.1.7 on 2023-03-07 09:53
# 备注：此迁移文件由Django 4.1.7版本自动生成，生成时间为2023年3月7日9:53

from django.conf import settings
# 备注：导入Django的配置模块，用于获取项目设置（如用户模型）
from django.db import migrations, models
# 备注：导入Django的数据库迁移和模型字段模块，用于定义迁移操作和模型结构
import django.db.models.deletion
# 备注：导入Django的外键删除行为模块，用于定义外键关联的删除策略
import django.utils.timezone
# 备注：导入Django的时区工具，用于处理时间字段的默认值


class Migration(migrations.Migration):
# 备注：定义迁移类，所有数据库迁移操作都通过此类实现

    initial = True
    # 备注：标记为初始迁移（首次创建模型时的迁移）

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]
    # 备注：迁移依赖配置，依赖项目中配置的用户模型（确保用户表先于当前表创建）

    operations = [
        # 备注：定义迁移操作列表，包含需要执行的数据库操作
        migrations.CreateModel(
            # 备注：创建第一个模型（数据库表）的操作
            name='OAuthConfig',
            # 备注：模型名称，对应数据库表名为"oauth_oauthconfig"（应用名_模型名）
            fields=[
                # 备注：模型字段定义列表
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                # 备注：主键字段，自增BigInteger类型，自动创建，不可序列化，显示名为"ID"
                ('type', models.CharField(choices=[('weibo', '微博'), ('google', '谷歌'), ('github', 'GitHub'), ('facebook', 'FaceBook'), ('qq', 'QQ')], default='a', max_length=10, verbose_name='类型')),
                # 备注：第三方平台类型字段，字符类型，最大长度10，可选值为微博/谷歌等，默认值为'a'（可能需要修正），显示名为"类型"
                ('appkey', models.CharField(max_length=200, verbose_name='AppKey')),
                # 备注：第三方应用的AppKey字段，字符类型，最大长度200，显示名为"AppKey"
                ('appsecret', models.CharField(max_length=200, verbose_name='AppSecret')),
                # 备注：第三方应用的AppSecret字段，字符类型，最大长度200，显示名为"AppSecret"
                ('callback_url', models.CharField(default='http://www.baidu.com', max_length=200, verbose_name='回调地址')),
                # 备注：授权回调地址字段，字符类型，默认值为百度地址（需替换为实际地址），最大长度200，显示名为"回调地址"
                ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')),
                # 备注：是否启用该平台的字段，布尔类型，默认值为True（启用），显示名为"是否显示"
                ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
                # 备注：创建时间字段，日期时间类型，默认值为当前时间，显示名为"创建时间"
                ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
                # 备注：最后修改时间字段，日期时间类型，默认值为当前时间，显示名为"修改时间"
            ],
            options={
                # 备注：模型的额外配置
                'verbose_name': 'oauth配置',
                # 备注：模型的单数显示名称
                'verbose_name_plural': 'oauth配置',
                # 备注：模型的复数显示名称（与单数相同）
                'ordering': ['-created_time'],
                # 备注：默认排序方式，按创建时间倒序（最新的在前）
            },
        ),
        migrations.CreateModel(
            # 备注：创建第二个模型（数据库表）的操作
            name='OAuthUser',
            # 备注：模型名称，对应数据库表名为"oauth_oauthuser"
            fields=[
                # 备注：模型字段定义列表
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                # 备注：主键字段，同OAuthConfig的id字段
                ('openid', models.CharField(max_length=50)),
                # 备注：第三方平台返回的用户唯一标识，字符类型，最大长度50
                ('nickname', models.CharField(max_length=50, verbose_name='昵称')),
                # 备注：第三方用户的昵称，字符类型，最大长度50，显示名为"昵称"
                ('token', models.CharField(blank=True, max_length=150, null=True)),
                # 备注：第三方授权令牌，字符类型，允许为空，最大长度150，可设为null
                ('picture', models.CharField(blank=True, max_length=350, null=True)),
                # 备注：第三方用户的头像地址，字符类型，允许为空，最大长度350，可设为null
                ('type', models.CharField(max_length=50)),
                # 备注：关联的第三方平台类型（如"weibo"），字符类型，最大长度50
                ('email', models.CharField(blank=True, max_length=50, null=True)),
                # 备注：第三方用户的邮箱，字符类型，允许为空，最大长度50，可设为null
                ('metadata', models.TextField(blank=True, null=True)),
                # 备注：存储额外的第三方用户信息，文本类型，允许为空，可设为null
                ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
                # 备注：创建时间字段，同OAuthConfig
                ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
                # 备注：最后修改时间字段，同OAuthConfig
                ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')),
                # 备注：外键字段，关联项目的用户模型，允许为空（支持未绑定本地账号的场景），删除策略为级联删除（用户删除时关联记录也删除），显示名为"用户"
            ],
            options={
                # 备注：模型的额外配置
                'verbose_name': 'oauth用户',
                # 备注：模型的单数显示名称
                'verbose_name_plural': 'oauth用户',
                # 备注：模型的复数显示名称（与单数相同）
                'ordering': ['-created_time'],
                # 备注：默认排序方式，按创建时间倒序
            },
        ),
    ]